레이드과정을통해서소개될것을기대해왔다. 하지만 DDD라는단어와의만남은그리쉽게예측할수없었던것이라스프링커뮤니티와관련개발자들사이에서도적지않은화제를불러일으키게되었다. 대다수의스프링개발자들은 2.0에대한발표소식을들으며, 함께소개된 DDD에대해서도많은관심을가지기시작했다. 2006년

Size: px
Start display at page:

Download "레이드과정을통해서소개될것을기대해왔다. 하지만 DDD라는단어와의만남은그리쉽게예측할수없었던것이라스프링커뮤니티와관련개발자들사이에서도적지않은화제를불러일으키게되었다. 대다수의스프링개발자들은 2.0에대한발표소식을들으며, 함께소개된 DDD에대해서도많은관심을가지기시작했다. 2006년"

Transcription

1 cover story3 DDD 개발의찰떡궁합 스프링프레임워크와 DDD 스프링프레임워크 (SpringFramework, 이하스프링 ) 의첫번째메이저업그레이드버전인 2.0 이처음발표되었을때개발자들이가장관심을가지고주 목했던것은스프링을통한 DDD(Driven Driven Design) 였다. 대부분의개발자들에게아직생소했던개념이었던 DDD 를과감하게주요기능으로내세 우면서등장한스프링은과연 DDD 와어떤관련이있는것일까? 스프링 2.x 를통해서 DDD 를적용하는전략은어떤것들이있는지살펴보자. 스프링 2.0 버전은 2005 년말에열렸던 TheSpring Experience 컨퍼런스에서처음소개가되었다. 그때까지 1.3버전으로준비되고있었던스프링의차기버전이컨퍼런스기간에 2.0이라는메이저버전으로버전자체의업그레이드가일어났다. 그결정의배경은스프링의다음버전에등장하는기능들의중요도와변화의영향력이메이저업그레이드를하는것이바람직할만큼중요하다는공감이있었기때문이다. 스프링 2.0에소개된새로운기능에는 XML 설정의단순화나스키마의도입또자바 5 의새롭게소개된언어특성의적용등그동안지속적으로요구되어졌기때문에당연히들어갈것으로기대했던내용들이대거포함되어있었다. 그런데그중에서필자의눈을사로잡는생소한단어가눈에띄었는데그것이바로 DDD다. TDD는많이들어봤어도 DDD는무엇인가궁금해하면서 DDD에대해서찾아보니이미몇년전부터엔터프라이즈아키텍처기술에관한이야기들이나올때마다자주등장했던 Eric Evans의책제목인 Domain Driven Design의약자인 DDD였다. 이일민 tobyilee@gmail.com 오픈소스기술을엔터프라이즈시스템에적용할수있는전략과기술연구에많은관심을가지고있다. 스프링프레임워크와하이버네이트등의오픈소스프레임워크의교육, 컨설팅, 기술지원을제공하고있는 Epril의대표컨설턴트로활동하고있다. 한국스프링사용자모임의기술고문으로도활동하며오픈소스기술의저변확대를위해서노력하고있다. 오픈소스기술에대한정보를공유하는 toby.epril. com 블로그를운영하고있다. 스프링 2.0 AOP, IoC/DI, PSA같은시대를앞서나가는새로운컨셉트와기능들을과감하게소개하고이를현장에접목시키는데앞서왔던스프링이었던지라많은스프링개발자들은지속적으로엔터프라이즈개발에필요로한유용한기술과전략이스프링의업그 134 m a s o

2 레이드과정을통해서소개될것을기대해왔다. 하지만 DDD라는단어와의만남은그리쉽게예측할수없었던것이라스프링커뮤니티와관련개발자들사이에서도적지않은화제를불러일으키게되었다. 대다수의스프링개발자들은 2.0에대한발표소식을들으며, 함께소개된 DDD에대해서도많은관심을가지기시작했다. 2006년가을에스프링 2.0의정식버전이릴리즈되고나서열렸던첫번째스프링컨퍼런스인 TheSpringExperience 2006에서는컨퍼런스의네개주요트랙중의하나가 DDD였을정도였으니스프링과 DDD는매우깊은관계를가지고있음을짐작할수있다. TSE 2006 DDD 트랙의첫번째세션의발표를바로 Domain Driven Design이라는책을통해서 DDD라는개념을소개하고이를보급시키는데앞장서고있는 Eric Evans이맡았다. Eric은 2007년유럽에서열린스프링원컨퍼런스에서도키노트발표를담당했을정도로스프링과깊은관계를가지고있다. DDD 란무엇인가? 이처럼스프링과 DDD의깊은관계가발생한이유는무엇일까? 그것은스프링이지금까지지향해온핵심가치와 DDD의그것이유사하기때문이라고생각된다. 스프링의등장배경과원리를소개한책인 J2EE Develo pment without EJB라는책의첫장에서는스프링이지향하는핵심가치를소개한다. 그중가장눈에띄는것이있다면바로 OO(Object Oriented) 라는것이다. 스프링이추구하는핵심가치는바로객체지향이다. 자바라는객체지향언어를사용하는프레임워크인스프링이니당연히 OO적일텐데왜그것을핵심가치라고하면서강조하고등장한것일까? 그것은자바의근본이라고도할수있는객체지향이사실은엔터프라이즈환경에서상당히무시당하고있다는안타까운현실에서나온것이다. 스프링은그것을사용하는개발자들에게자바가객체지향언어라는가장기초적인사실을다시상기시켜주면서그기초에충실할때에가장복잡하게생각되는엔터프라이즈개발이사실은쉽고단순해진다는것을알려주려는의도를가지고만들어진것이다. DDD 또한그와유사하다. DDD는어떤천재적인기술자에게서갑자기소개된새로운개념과아이디어가아니다. 소프트웨어설계라는것이존재했던가장초기부터추구하고가져왔던가장기초가되는기본에다시충실하자는이야기이다. 그래서어떤사람들에게는매우진부하고당연하게들리기도한다. Eric Evans의 DDD 책을읽어본많은사람들이의외로실망하는이유가바로거기에있다. 이미잘알고있다고생각하는당연한내 용들이많기때문이다. 하지만그것에충실하는것이의외로현장에서잘이루어져있지않고, 세세한전략들이충분히제시되고있지않다는것이현실임을안다면소프트웨어설계의기본으로돌아가자는 DDD의주장이매우강력하고중요한것이라는점을인식할수있을것이다. 스프링프레임워크의모체인 Interface21의 Ramnivas Lad dad가정리한 DDD의세가지특징을살펴보자. 첫째는도메인그자체와도메인로직에초점을맞춘다는것이다. 일반적으로많이사용하는데이터중심의접근법을탈피해서순수한도메인의모델과로직에집중하는것을말한다. 둘째는보편적인 (ubiquitous) 언어의사용이다. 도메인전문가와소프트웨어개발자간의커뮤니케이션문제를없애고상호가이해할수있고모든문서와코드에이르기까지동일한표현과단어로구성된단일화된언어체계를구축해나가는과정을말한다. 이로서분석작업과설계그리고구현에이르기까지통일된방식으로커뮤니케이션이가능해진다. 셋째는소프트웨어엔티티와도메인컨셉트를가능한가장가까이일치시키는것이다. 분석모델과설계가다르고그것과코드가다른구조가아니라도메인모델부터코드까지항상함께움직이는구조의모델을지향하는것이 DDD의핵심원리이다. 물론 DDD는방법론이아니다. 따라서이런경우이렇게하라는식의접근법보다는원칙과핵심가치를설명해주고그것에어떻게집중할것인가에주목하게하는것이다. 모든애플리케이션의핵심은결국그애플리케이션을사용할도메인과그로직이라고본다면소프트웨어설계와구현도그부분이핵심이되는것이마땅하다는것이 DDD의개념이라고생각하면된다. DDD 에서스프링의역할그렇다면스프링을이용한개발과 DDD는무슨직접적인관련이있는것일까? 사실스프링은설계도구나방법론이아니다. 애플리케이션을개발하는데있어서필요로하는기본프레임워크일뿐이다. 하지만스프링은처음부터단순한생산성과품질향상을위한애플리케이션프레임워크일뿐만아니라개발자들에게개발의원칙과지향해야할개발원리를설명하기위해서등장한것이다. 따라서스프링을사용하면자연스럽게그애플리케이션코드는스프링이지향하는개발원칙을따라갈수있게된다. 스프링의핵심가치는위에서언급한객체지향 (OO) 과단순함 (Simplicity) 이다. 자바는처음언어가소개될때객체지향프로그래밍을지원하는강력한언어라는점을가장중요한특징으로내세웠다. 하지 m a s o 135

3 cover story 3_ 스프링프레임워크와 DDD 만자바가본격적으로사용되는엔터프라이즈환경의코드들을가만히살펴보면과연객체지향의특성들이잘살아있는지, 그장점을잘활용하고있는지생각하면의문스럽기만하다. Anemic Domain Model 이는흔히말하는빈약한도메인모델 (anemic domain model) 라는말에잘나타나있다. 객체지향에서말하는오브젝트는상태 (state) 와행위 (behavior) 로구성되어있어야한다. 하지만자바엔터프라이즈개발에서흔히사용되는방식은단지상태값, 즉데이터만가지는데이터홀더개념의단순오브젝트이다. 이런오브젝트로구성된도메인모델은객체지향언어와기술의장점을전혀살릴수없는한계를가지고있다. 따라서구조적으로불합리한형태의코드를생산하게한다. 문제는이런빈약한도메인모델과오브젝트구조가거의엔터프라이즈자바개발의전반에걸쳐서사용되고있다는점이다. 대부분의서버사이드아키텍처라고제시되는구조가빈약한도메인모델의사용을부추기고있다는점이문제다. 빈약한오브젝트는자바빈형태로나타나는 < 리스트 1> 과같은형태를가진다. < 리스트 1> 빈약한오브젝트 (Anemic Object) 의예 class Customer { Integer customerid String name String telephone String address Integer point Date lastvisited public Integer getcustomerid() { return customerid public void setcustomerid(integer customerid) { this.customerid = customerid; public String getname() { return name public void setname(string name) { this.name = name; public String gettelephone() { return telephone public void settelephone(string telephone) { this.telephone = telephone; public String getaddress() { return address public void setaddress(string address) { this.address = address; public Integer getpoint() { return point public void setpoint(integer point) { this.point = point; public Date getlastvisited() { return lastvisited public void setlastvisited(date lastvisited) { this.lastvisited = lastvisited; 빈약한오브젝트가가져오는문제는단지객체지향기술의순수주의자들의주장처럼모든객체는행위가포함되야한다는정도에그치는것이아니다. 모든도메인은행위에해당하는로직을가지고있고, 그로직을어떠한형태로든나타내야하는데그것이도메인의상태정보만가지고있는빈약한오브젝트속에서모두빠져나와다른형태로구성된다는점이다. 대부분의자바엔터프라이즈아키텍처가가지고있는이런구조적인한계들은결국과도한서비스레이어의사용을부추긴다. 도메인오브젝트의데이터홀더 (data holder) 화와서비스레이어의비대해짐은결국트랜잭션스크립트패턴의형태의코드를양산하게된다. 트랜잭션스크립트는각업무트랜잭션을하나의메소드에한번에구성하는형태의패턴이다. 이런형태의코드는결국객체지향적인도메인모델의장점을살릴수없는결과로나아가게된다. < 리스트 2> 는트랜잭션스크립트스타일의서비스레이어의예이다. Customer와 PointRule이라는두개의도메인오브젝트가존재하지만각도메인에종속된로직들이서비스레이어의메소드에산재되어있는구조이다. addpoint 메소드는 Customer, PointRule을받아서또다른서비스메소드를사용해서다도메인오브젝트의로직에해당하는코드를처리한다. 또한 within OneMonth 메소드나 isvipcutomer 메소드의경우도도메인오브젝트에포함되야하는내용을서비스레이어에노출한형태이다. 이런형태의거대한서비스레이어 (big service layer) 형태는객체지향의설계원칙에맞지않을뿐더러도메인로직을여러곳에산재하게만들뿐더러코드의중복과오브젝트의재활용성을극히떨어뜨리게한다. 136 m a s o

4 < 리스트 2> Big Service 의예 class CustomerService { CustomerDao customerdao; PointRuleDao pointruledao; public void addpoints() { List<Customer> customers = customerdao.getallcustomers(); PointRule pointrule = pointruledao.getcurrentpointrule(); for(customer customer : customers) { if (withinonemonth(customers.getlastvisited())) { if (isvipcustomer(customer, pointrule)) { customer.setpoint(customer.getpoint() + VIP_POINTS); else { customer.setpoint(customer.getpoint() + MEMBER_POINTS); boolean withinonemonth(date lastvisited) { boolean isvipcustomer(customer customer, PointRule pointrule) { 데이터중심의설계와개발에익숙한개발자들은적절한도메인모델을이용해서개발하는데경험이없거나익숙하지않기때문에이런방식을선호하거나별문제의식없이사용하는경우가많다. 또어떤기술은기술자체가이런구조적인한계를노출하고있다. 대표적인것이 EJB의엔티티빈기술이다. 스프링을비롯한새로운프레임워크와기술들이 POJO를선호하는이유가있다면이또한자바의객체지향적인특징의기본으로돌아갈수있는가장단순하면서도이상적이기때문이다. < 그림 1> 은전형적인 3-tier 구조의 J2EE 아키텍처이다. 도메인로직이서비스레이어에집중되어있고도메인모델오브젝트는단지 DTO와같은역할을하는데이터홀더로사용되는형태이다. 사실이런형태가자바엔터프라이즈개발에서거의표준과같이인식되고있다는것은심각한문제이다. 심지어는초기스프링의예제나스프링개발자들에의해서쓰여진스프링서적의샘플코드도이런구조를그대로사용했다는것은이런모델 이얼마나자연스럽게개발자들에게받아들여지고사용되어져왔는지짐작하게해준다. Presentation Rich Domain Model Anemic Domain Model Service < 그림 1> Anemic domain model + Big service layer 아키텍처 Data Access 빈약한도메인모델의한계와문제점을인식한개발자들은점차로풍성한도메인모델 (rich domain model) 이나지능적인도메인모델 (smart domain model) 이라고불리는형태로의전환을시도한다. 지능적도메인모델의특징은도메인오브젝트에단순한데이터값의저장을위한 getter/setter가아닌도메인과직접관련이되어있는로직을담았다는것이다. 제한적이지만도메인에극히종속적인로직은도메인오브젝트에담았기때문에포터블한도메인오브젝트로발전할뿐더러상당수의로직부분이서비스레이어에서제거될수있게하는좋은효과를가져왔다. < 리스트 3> 풍성한도메인오브젝트의적용예 class Customer { Integer customerid String name String telephone String address Integer point Date lastvisited Date registered public booean isvipcustomer(pointrule pointrule) { return this.customerlevel > pointrule.getviplevel(this.registered) && isvalidregiststedcustomer(); { public voiddovippointupgrade(pointrule pointrule) if (isvipcustomer(pointrule) && ) m a s o 137

5 cover story 3_ 스프링프레임워크와 DDD customer.setpoint(customer.getpoint() + pointrule.vip_points); else { 면 DDD의도메인모델은독립적인형태의레이어를이루고있는것을볼수있다. customer.setpoint(customer.getpoint() + pointrule.member_points); Presentation Service Domain Data Access < 리스트 3> 에서는기존에서비스레이어에있던도메인로직이도메인오브젝트안으로이동한모습을볼수있다. 이렇게도메인의로직이이동을하게되면서비스레이어에중복되고산재해서나타나던도메인로직이사라지고일관성있게도메인오브젝트에처리를맞길수있는형태로발전하게된다. < 리스트 4> 는풍성한도메인오브젝트를사용하는서비스레이어의변화된모습이다. < 리스트 4> 풍성한도메인오브젝트를사용하는서비스레이어의예 class CustomerService { CustomerDao customerdao; PointRuleDao pointruledao; public void addpoints() { List<Customer> customers = customerdao.getallcustomers(); PointRule pointrule = pointruledao.getcurrentpointrule(); DDD 아키텍처 for(customer customer : customers) { customer.dovippointupgrade(pointrule); 풍성한도메인모델을사용하는것만으로도도메인모델중심의구현과일치가어느정도가능해졌다. 하지만 DDD에서지향하는도메인레이어라는개념은이보다더발전된형태의아키텍처이다. < 그림 2> 는기존의 3-tier 아키텍처와는다른형태의 DDD에서많이사용하는구조이다. 기존의아키텍처와의가장큰변화라면도메인레이어의도입이다. 기존의도메인모델 / 오브젝트는단지 DTO의역할을하거나데이터홀더로사용되어져왔다 < 그림 2> DDD 아키텍처 도메인레이어는비즈니스애플리케이션의심장과갈은역할을한다. 모든도메인정보와기능과로직과룰이이레이어에집중되고관리된다. 도메인전문가와소프트웨어개발자들이지속적으로함께살펴보며다듬어나갈수있는그도메인모델을그대로반영할수있는구조가만들어지게되는것이다. 이경우서비스레이어는비즈니스로직을직접가지고있지않으면서소프트웨어의기능들을적절한도메인레이어와의협력을통해서처리할수있는코디네이터역할을담당하게된다. 따라서서비스레이어는매우얇아지게된다. 또한가지큰변화는저장소 (repository) 또는데이터액세스레이어와의연동을이제는도메인레이어가직접하게된다는것이다. 기존의풍성한도메인모델에서는도메인모델에게넘겨줄필요한도메인객체의생성을서비스레이어가담당하게되었다. 따라서모든레이어간의연동이서비스레이어에집중되는한계를가질수밖에없었다. 하지만 DDD 아키텍처에서는도메인모델이자신이필요로하는, 퍼시스턴스관리를위한리포지토리또는인프라스트럭처서비스와직접연동하는것이가능하다. < 리스트 5> 는도메인레이어의형태로재구성한 Customer 클래스이다. 풍성한도메인모델구조에서는서비스레이어가데이터액세스레이어에요청을해서 PointRule를받아이를 Cus tomer 오브젝트에넘겨줘야했지만, 여기서는직접 Point RuleRepository에요청해서필요한것을받아서사용할수있다. 따라서도메인오브젝트는서비스레이어의도움이없이도독립적으로도메인로직을처리할수있는독립된레이어형태로구성이가능하게된것이다. < 리스트 5> 도메인레이어의 Customer 클래스 class Customer { PointRuleRepository pointrulerepository; 138 m a s o

6 Integer customerid Date lastvisited Date registered public booean isvipcustomer(pointrule pointrule) { return this.customerlevel > pointrule.getviplevel(this.registered) && isvalidregiststedcustomer(); public voiddovippointupgrade() { pointrulerepository.getcurrentpointrule(); if (isvipcustomer(pointrule)) customer.setpoint(customer.getpoint() + VIP_POINTS); else { customer.setpoint(customer.getpoint() + MEMBER_POINTS); 만을가지는형태이기때문이다. 즉의존관계가없다는것이다. 따라서굳지빈으로등록할이유가없다. 그냥 new 키워드를통해서생성하면된다. 두번째문제는도메인오브젝트의생성이애플리케이션코드에서직접일어나지않고써드파티 (3-rd party) 프레임워크등에서만들어지는경우가있기때문이다. 대표적으로 O/R매핑툴인하이버네이트를사용한다면 find나 get 등에의해서전달되는도메인오브젝트는모두하이버네이트내부에서직접생성이된다. 따라서그오브젝트의라이프사이클을스프링에위임할수없기때문에빈으로쓰는것이부적절하다. 문제는빈약한도메인모델을사용한다면상관없지만, DDD 에서의요구되는도메인오브젝트를사용하려면외부의서비스나리포지토리의삽입이필수적으로요구된다. 하지만위의두가지제약때문에따라서단순히빈으로등록해서사용하는것은불가능하다. 바로이런문제를해결할수있는방법으로등장한것이스프링 2.0의 DDD지원기능이다. 엄밀히말해서스프링에 DDD기능이란없다. 단지위와같은특성을가지고있는도메인모델에의존삽입이가능하게하기위해서스프링 2.0에특별히도입된기능이있을뿐이다. DI/AOP와 DDD 그렇다면과연이런 DDD의아키텍처구조와스프링은무슨관계가있다는것인가? 사실스프링이직접적으로 DDD 아키텍처를강제하거나그런구조로만들어져있는것은아니다. 스프링은매우범용적인자바엔터프라이즈개발에사용되어질수있도록만들어진프레임워크이다. 그러면서도 DDD아키텍처를적용할때에꼭필요하다고생각되는기능을제공한다. 도메인모델와의존삽입 (DI) 앞에서와같은도메인레이어를만들때가지는문제점에대해서생각해보자. 첫번째문제는도메인오브젝트에리포지토리나다른인프라스트럭처서비스를어떻게삽입할것인가의문제가있다. 스프링이지원하는의존삽입 (DI) 을사용하면간단하게처리할수있을것같다. 하지만도메인오브젝트는의존삽입을적용하기에적절하지않다. 스프링에서빈 (bean) 으로등록할수있는것과또는없는것, 하지말아야할것을구분할때항상등장하는예가바로도메인오브젝트다. AspectJ의도움으로스프링이직접생성하지않는도메인오브젝트에도의존삽입이가능하게해주는것이다. 원리는간단하다. AspectJ가지원하는 LTW(Load Time Weaving) 기능을이용해서오브젝트가생성되는시점의조인포인트에서오브젝트에자동결합 (autowiring) 방식으로의존성을삽입해주는것이다. 스프링의의존삽입기능은 XML과같은형태로외부에서정의하는방법외에도프로그래밍적으로사용할수있는자동결합방식도가능하다. 이를이용하면빈의이름과일치하는 setter를찾아서자동으로삽입을시키는것이가능하다. AspectJ 5의 LTW를이용하면별도의 AOP를위한컴파일작업없이도클래스가로딩되는시점을이용해서어느곳에서생성되는지와상관없이자동으로의존삽입을시킬수있다. < 리스트 6> Customer클래스이다. 사실스프링 2.0의 DDD 지원기능은막상적용하려고보면무척간단하다. 물론그내부에서처리되어지는것들은매우복 m a s o 139

7 cover story 3_ 스프링프레임워크와 DDD 잡한방식으로이루어지고있지만말이다. < 리스트 이적용된 Customer class Customer { PointRuleRepository pointrulerepository; public void setpointrulerepository(pointrulerepository pointrulerepository) { this.pointrulerepository = pointrulerepository; 도메인모델과 AOP 의존삽입이가능하다는것은모든빈형태로존재하는각종서비스들을다이용할수있다는것이다. 이외에도도메인모델에필요로하는, AOP에서자주등장하는횡단관심 (Crosscutting Concerns) 도모두적용할수있다. 트랜잭션지원이나로깅, 보안, prototype 형태로정의하는것이필요하다. 빈으로등록된이유는일반적인형태의삽입대상이되기위함은아니다. 따라서이도메인오브젝트빈을다른빈의의존관계로만들면안된다. <bean class= com.mycompany.customer scope= prototype > <propety /> <bean> 빈의형태로등록이되었기때문에스프링 AOP의기능을모두적용할수있다. 스프링 2.0의의존삽입과 AOP는 DDD를본격적으로구현해서사용하려면반드시필요한기술이라고여겨지고있다. 이제까지풍성한도메인모델정도의구현에만족했던개발자들에게도메인레이어의구분이라는본격적인 DDD 구현의실마리를찾아준것이다. 스프링 DDD의적용전략스프링이제공해주는 DI/AOP를이용하면 DDD의도메인레이어구현을위해서필요로하는기술적인요구사항은충족될수 있다. 하지만이것만으로바로 DDD방식의구현에도전하는개발자들은다들한번쯤좌절을겪기마련이다. 기존의빈약한도메인모델구조에서는경험하지못했던아키텍처상의더많은변수들이있기때문이다. 첫번째로고민해볼것은리포지토리의사용방식이다. 스프링시큐리티를만든 Ben Alex나스프링웹플로우의 Keith Donald는하이버네이트와같은투명한영속성 (transparent persistence) 방식의 ORM 기술을선호하는편이다. 그이유는투명한영속성을사용하는방식은명시적으로리포지토리에 update문을호출하지않아도퍼시스턴스오브젝트에발생하는변화를감지해서자동이로이를데이터베이스와싱크를맞춰주기때문이다. 또도메인오브젝트그래프를따라서데이터를자동으로적절한시점에서가져오는것도가능하다. 따라서도메인로직에빈번하게리포지토리나 DAO를호출하는코드가등장하지않는다. 최초로퍼시스턴스화할때와초기조회, 삭제, 벌크수정정도만이사용되어지고그외의퍼시스턴스코드가등장하지않으니이방식을사용한코드는순수한자바오브젝트만을사용한코드처럼깔끔하고명확하게만들어질수가있다. 하지만이방식의문제점을지적하는사람도적지않다. 대표적으로역시스프링의핵심개발자인 Ramnivas Raddad이다. 그는하이버네이트나 JPA를이용해서투명한영속성을사용할경우, 그사용이과도하게되면많은데이터를처리하는데불필요한오버헤드가발생한다고생각한다. 따라서리포지토리의데이터로직을좀더강화해서매우정교한형태의꼭필요한처리만가능하게하고벌크처리는 DAO안에서가능한간략한방식으로일어나는것이좋다고주장한다. 이렇게될경우도메인로직을순수한자바오브젝트로표현하던것을일부데이터베이스스크립트방식으로만들게되지만전체애플리케이션의성능을고려해본다면엔터프라이즈환경에서는충분히타협할수있는구조라는것이다. 순수한도메인오브젝트중심의로직구현방식과데이터베이스와의협조를통한중도적인접근방법중어느것이항상더낫다고볼수는없을것같다. 그럼에도필자는투명한영속성을지원하는 ORM을사용하는것이 DDD에서가지는장점이매우많다고생각한다. 어쨌든좀더오브젝트중심의코드가만들어지기때문이다. 다른이유로원천적으로 ORM 툴을사용할수없는경우가아니라면, 그렇게설계된후에필요에따라서성능을위해서개선하는방식을취하는것이바람직할것이다. 두번째로고려해야할것은 DTO이다. ROO(Real Object Oriented) 라는애플리케이션프레임워크를만든 Ben Alex는도메인오브젝트는도메인레이어밖에서는 140 m a s o

8 존재해서는안된다고주장한다. 따라서그의프레임워크에서는도메인레이어밖으로나오는오브젝트는 DTO 형태로복제가되서나온다. 서비스레이어와도메인레이어사이에얇은 DTO 를위한어셈블리레이어를가지고있다. 또모든도메인오브젝트는근본적으로수정가능하지않아야 (immutable) 한다고주장하는사람도있다. 수정이필요한경우는복제를통해서도메인레이어에요청해야한다는것이다. 필자와같은개발자들은 DTO를쓰는것을바람직하지않게생각한다. 모든레이어에존재하는도메인모델 (domain model everywhere) 방식을선호한다. 이경우 DTO를지지하는사람들이문제로지적하는도메인레이어외부에서변경이일어난다는문제가발생한다. 예를들어프레젠테이션레이어에서임의로도메인오브젝트의로직을호출하거나변경을가할수도있다는것이다. 이런것을원천적으로차단하는방법중의하나가 DTO이다. 하지만도메인오브젝트를직접사용한다고할지라도이런문제를해결할방법이있다. 역시스프링 2.0에등장하는 AspectJ를이용한 SpringAOP를적용하면특정레이어에서특정메소드에접근하는것을강제적으로차단할수있다. 이를통해서구지매번개발자들에게개발정책을교육하고매번점검하지않더라도이를편리하게강제할수있다. DDD의미래 DDD는많은사람들의주목을받고있는것에비해서사실상당히인기가없다. DDD에대한말은많고많은개발자들이이야기하고있기는하지만, 정작이를현장에적용했다는소식은그다지들리지않는다. 이는 DDD에대한정확한이해와접근방법에대한학습이부족한원인도있을것이다. 하지만더큰이유는 DDD가단지개발기술이아니기때문이다. DDD 사실상소프트웨어설계에관한철학이다. 그설계와구현이일치를이뤄야하기때문에스프링과같은툴들이이를지원하고있을뿐이다. 따라서진정한 DDD를적용하고그장점을충분히누리려면사실많은연구와훈련이필요로하다. 스프링과같은실전개발을위한좋은툴이제공되고있으니이제한번쯤 DDD에대해서깊이연구해보고도전해볼때가되지않았을까? 참고자료 1. Anemic Domain Model: 2. Domian Driven Design with DI and AOP: Ramnivas Laddad 3. Spring 2.0 Reference Manual 4. Domain Driven Design: Eric Evans 세미나주제제안이벤트 < 월간 > 마소창간 24 주년세미나의주제제안이벤트변화하는세상을이끄는 차세대웹개발전략세미나 의세부주제를제안해주세요. 좋은제안을주신분들중 10 분을추첨하여 < 월간 > 마소창간 24 주년세미나의초대권을드립니다. 참여방법 1. 으로메일을보낸다. 2. 메일제목에 [ 세미나제안 ] 이라는말머리를단다. 3. 세미나때듣고싶은개발플랫폼이나주제, 강사의이름 ( 선택사항 ) 을적는다. 4. 자신의성함, 전화번호, 주소를적는다. 5. 세미나초대권을기다린다. 참여기간 2007 년 10 월 20 일까지당첨자발표 < 월간 > 마소 11 월호및메일로개별통지 m a s o 141

- JPA를사용하는경우의스프링설정파일에다음을기술한다. <bean id="entitymanagerfactory" class="org.springframework.orm.jpa.localentitymanagerfactorybean" p:persistenceunitname=

- JPA를사용하는경우의스프링설정파일에다음을기술한다. <bean id=entitymanagerfactory class=org.springframework.orm.jpa.localentitymanagerfactorybean p:persistenceunitname= JPA 와 Hibernate - 스프링의 JDBC 대신에 JPA를이용한 DB 데이터검색작업 - JPA(Java Persistence API) 는자바의 O/R 매핑에대한표준지침이며, 이지침에따라설계된소프트웨어를 O/R 매핑프레임워크 라고한다. - O/R 매핑 : 객체지향개념인자바와관계개념인 DB 테이블간에상호대응을시켜준다. 즉, 객체지향언어의인스턴스와관계데이터베이스의레코드를상호대응시킨다.

More information

Spring Boot/JDBC JdbcTemplate/CRUD 예제

Spring Boot/JDBC JdbcTemplate/CRUD 예제 Spring Boot/JDBC JdbcTemplate/CRUD 예제 오라클자바커뮤니티 (ojc.asia, ojcedu.com) Spring Boot, Gradle 과오픈소스인 MariaDB 를이용해서 EMP 테이블을만들고 JdbcTemplate, SimpleJdbcTemplate 을이용하여 CRUD 기능을구현해보자. 마리아 DB 설치는다음 URL 에서확인하자.

More information

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2 객체지향프로그래밍 IT CookBook, 자바로배우는쉬운자료구조 q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2 q 객체지향프로그래밍의이해 v 프로그래밍기법의발달 A 군의사업발전 1 단계 구조적프로그래밍방식 3 q 객체지향프로그래밍의이해 A 군의사업발전 2 단계 객체지향프로그래밍방식 4 q 객체지향프로그래밍의이해 v 객체란무엇인가

More information

유니티 변수-함수.key

유니티 변수-함수.key C# 1 or 16 (Binary or Hex) 1:1 C# C# (Java, Python, Go ) (0101010 ). (Variable) : (Value) (Variable) : (Value) ( ) (Variable) : (Value) ( ) ; (Variable) : (Value) ( ) ; = ; (Variable) : (Value) (Variable)

More information

* Factory class for query and DML clause creation * tiwe * */ public class JPAQueryFactory implements JPQLQueryFactory private f

* Factory class for query and DML clause creation * tiwe * */ public class JPAQueryFactory implements JPQLQueryFactory private f JPA 에서 QueryDSL 사용하기위해 JPAQuery 인스턴스생성방법 http://ojc.asia, http://ojcedu.com 1. JPAQuery 를직접생성하기 JPAQuery 인스턴스생성하기 QueryDSL의 JPAQuery API를사용하려면 JPAQuery 인스턴스를생성하면된다. // entitymanager는 JPA의 EntityManage

More information

PowerPoint Presentation

PowerPoint Presentation public class SumTest { public static void main(string a1[]) { int a, b, sum; a = Integer.parseInt(a1[0]); b = Integer.parseInt(a1[1]); sum = a + b ; // 두수를더하는부분입니다 System.out.println(" 두수의합은 " + sum +

More information

제11장 프로세스와 쓰레드

제11장 프로세스와 쓰레드 제9장자바쓰레드 9.1 Thread 기초 (1/5) 프로그램 명령어들의연속 (a sequence of instruction) 프로세스 / Thread 실행중인프로그램 (program in execution) 프로세스생성과실행을위한함수들 자바 Thread 2 9.1 Thread 기초 (2/5) 프로세스단위작업의문제점 프로세스생성시오버헤드 컨텍스트스위치오버헤드

More information

Microsoft PowerPoint - chap01-C언어개요.pptx

Microsoft PowerPoint - chap01-C언어개요.pptx #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 프로그래밍의 기본 개념을

More information

[Brochure] KOR_TunA

[Brochure] KOR_TunA LG CNS LG CNS APM (TunA) LG CNS APM (TunA) 어플리케이션의 성능 개선을 위한 직관적이고 심플한 APM 솔루션 APM 이란? Application Performance Management 란? 사용자 관점 그리고 비즈니스 관점에서 실제 서비스되고 있는 어플리케이션의 성능 관리 체계입니다. 이를 위해서는 신속한 장애 지점 파악 /

More information

슬라이드 1

슬라이드 1 Continuous Integration 엔터프라이즈어플리케이션아키텍처 조영호카페PJT팀 2008.10.01 youngho.cho@nhncorp.com 목차 1. Domain Logic Pattern 2. Data Source Pattern 3. Putting It All Together 1. Domain Logic Pattern Layered Architecture

More information

Microsoft PowerPoint - CSharp-10-예외처리

Microsoft PowerPoint - CSharp-10-예외처리 10 장. 예외처리 예외처리개념 예외처리구문 사용자정의예외클래스와예외전파 순천향대학교컴퓨터학부이상정 1 예외처리개념 순천향대학교컴퓨터학부이상정 2 예외처리 오류 컴파일타임오류 (Compile-Time Error) 구문오류이기때문에컴파일러의구문오류메시지에의해쉽게교정 런타임오류 (Run-Time Error) 디버깅의절차를거치지않으면잡기어려운심각한오류 시스템에심각한문제를줄수도있다.

More information

JAVA PROGRAMMING 실습 08.다형성

JAVA PROGRAMMING 실습 08.다형성 2015 학년도 2 학기 1. 추상메소드 선언은되어있으나코드구현되어있지않은메소드 abstract 키워드사용 메소드타입, 이름, 매개변수리스트만선언 public abstract String getname(); public abstract void setname(string s); 2. 추상클래스 abstract 키워드로선언한클래스 종류 추상메소드를포함하는클래스

More information

Spring Data JPA Many To Many 양방향 관계 예제

Spring Data JPA Many To Many 양방향 관계 예제 Spring Data JPA Many To Many 양방향관계예제 오라클자바커뮤니티 (ojc.asia, ojcedu.com) 엔티티매핑 (Entity Mapping) M : N 연관관계 사원 (Sawon), 취미 (Hobby) 는다 : 다관계이다. 사원은여러취미를가질수있고, 하나의취미역시여러사원에할당될수있기때문이다. 보통관계형 DB 에서는다 : 다관계는 1

More information

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D> Power Java 제 8 장클래스와객체 I 이번장에서학습할내용 클래스와객체 객체의일생직접 메소드클래스를 필드작성해 UML 봅시다. QUIZ 1. 객체는 속성과 동작을가지고있다. 2. 자동차가객체라면클래스는 설계도이다. 먼저앞장에서학습한클래스와객체의개념을복습해봅시다. 클래스의구성 클래스 (class) 는객체의설계도라할수있다. 클래스는필드와메소드로이루어진다.

More information

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호 제이쿼리 () 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호 CSS와마찬가지로, 문서에존재하는여러엘리먼트를접근할수있다. 엘리먼트접근방법 $( 엘리먼트 ) : 일반적인접근방법

More information

PowerPoint Presentation

PowerPoint Presentation Class - Property Jo, Heeseung 목차 section 1 클래스의일반구조 section 2 클래스선언 section 3 객체의생성 section 4 멤버변수 4-1 객체변수 4-2 클래스변수 4-3 종단 (final) 변수 4-4 멤버변수접근방법 section 5 멤버변수접근한정자 5-1 public 5-2 private 5-3 한정자없음

More information

제8장 자바 GUI 프로그래밍 II

제8장 자바 GUI 프로그래밍 II 제8장 MVC Model 8.1 MVC 모델 (1/7) MVC (Model, View, Controller) 모델 스윙은 MVC 모델에기초를두고있다. MVC란 Xerox의연구소에서 Smalltalk 언어를바탕으로사용자인터페이스를개발하기위한방법 MVC는 3개의구성요소로구성 Model : 응용프로그램의자료를표현하기위한모델 View : 자료를시각적으로 (GUI 방식으로

More information

Microsoft PowerPoint 장강의노트.ppt

Microsoft PowerPoint 장강의노트.ppt 클래스와객체 클래스와객체 객체 : 우리주변의어떤대상의모델 - 예 : 사람, 차, TV, 개 객체 = 상태 (state) + 행동 (behavior) - 예 : 개의상태 - 종자, 이름, 색개의행동 - 짖다, 가져오다 상태는변수로행동은메소드로나타냄 객체는클래스에의해정의된다. 클래스는객체가생성되는틀혹은청사진이다. 2 예 : 클래스와객체 질문 : 클래스와객체의다른예는?

More information

JAVA PROGRAMMING 실습 05. 객체의 활용

JAVA PROGRAMMING 실습 05. 객체의 활용 public class Person{ public String name; public int age; } public Person(){ } public Person(String s, int a){ name = s; age = a; } public String getname(){ return name; } @ 객체의선언 public static void main(string

More information

C++ Programming

C++ Programming C++ Programming 예외처리 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 예외처리 2 예외처리 예외처리 C++ 의예외처리 예외클래스와객체 3 예외처리 예외를처리하지않는프로그램 int main() int a, b; cout > a >> b; cout

More information

ThisJava ..

ThisJava .. 자바언어에정확한타입을추가한 ThisJava 소개 나현익, 류석영 프로그래밍언어연구실 KAIST 2014 년 1 월 14 일 나현익, 류석영 자바언어에정확한타입을추가한 ThisJava 소개 1/29 APLAS 2013 나현익, 류석영 자바 언어에 정확한 타입을 추가한 ThisJava 소개 2/29 실제로부딪힌문제 자바스크립트프로그램분석을위한요약도메인 나현익,

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 클래스, 객체, 메소드 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 필드만있는클래스 텔레비젼 2 예제 1. 필드만있는클래스 3 예제 2. 여러개의객체생성하기 4 5 예제 3. 메소드가추가된클래스 public class Television { int channel; // 채널번호 int volume; // 볼륨 boolean

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 인터페이스, 람다식, 패키지 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 홈네트워킹 public interface RemoteControl { public void turnon(); // 가전제품을켠다. public void turnoff(); // 가전제품을끈다. 인터페이스를구현 public class Television

More information

2 단계 : 추상화 class 오리 { class 청둥오리 extends 오리 { class 물오리 extends 오리 { 청둥오리 mallardduck = new 청둥오리 (); 물오리 redheadduck = new 물오리 (); mallardduck.swim();

2 단계 : 추상화 class 오리 { class 청둥오리 extends 오리 { class 물오리 extends 오리 { 청둥오리 mallardduck = new 청둥오리 (); 물오리 redheadduck = new 물오리 (); mallardduck.swim(); 인터페이스적용 오리객체설계하기 ) 청둥오리, 물오리를설계하세요. 1 단계 : 필요한객체설계 class 청둥오리 { class 물오리 { 청둥오리 mallardduck = new 청둥오리 (); 물오리 redheadduck = new 물오리 (); mallardduck.swim(); mallardduck.fly(); mallardduck.quack(); redheadduck.swim();

More information

Spring Boot

Spring Boot 스프링부트 (Spring Boot) 1. 스프링부트 (Spring Boot)... 2 1-1. Spring Boot 소개... 2 1-2. Spring Boot & Maven... 2 1-3. Spring Boot & Gradle... 3 1-4. Writing the code(spring Boot main)... 4 1-5. Writing the code(commandlinerunner)...

More information

PowerPoint Presentation

PowerPoint Presentation 데이터처리프로그래밍 Data Processing Programming 08 객체와클래스 목차 1. 객체와클래스 2. 인스턴스변수, 클래스변수 3. 클래스매직메소드 4. 클래스의상속 데이터처리프로그래밍 (Data Processing Programming) - 08 객체와클래스 3 1. 객체와클래스 객체 Object 객체란존재하는모든것들을의미 현실세계는객체로이루어져있고,

More information

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r Jakarta is a Project of the Apache

More information

Microsoft PowerPoint UI-Event.Notification(1.5h).pptx

Microsoft PowerPoint UI-Event.Notification(1.5h).pptx To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 UI 이벤트 Event listener Touch mode Focus handling Notification Basic toast notification Customized toast notification Status bar notification 2 사용자가인터랙션하는특정 View

More information

17장 클래스와 메소드

17장 클래스와 메소드 17 장클래스와메소드 박창이 서울시립대학교통계학과 박창이 ( 서울시립대학교통계학과 ) 17 장클래스와메소드 1 / 18 학습내용 객체지향특징들객체출력 init 메소드 str 메소드연산자재정의타입기반의버전다형성 (polymorphism) 박창이 ( 서울시립대학교통계학과 ) 17 장클래스와메소드 2 / 18 객체지향특징들 객체지향프로그래밍의특징 프로그램은객체와함수정의로구성되며대부분의계산은객체에대한연산으로표현됨객체의정의는

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 Power Java 제 7 장클래스와객체 이번장에서학습할내용 객체지향이란? 객체 메시지 클래스 객체지향의장점 String 클래스 객체지향개념을완벽하게이해해야만객체지향설계의이점을활용할수있다. 실제세계는객체로이루어진다. 객체지향이란? 실제세계를모델링하여소프트웨어를개발하는방법 절차지향과객체지향 절차지향프로그래밍 (procedural programming): 문제를해결하는절차를중요하게생각하는방법

More information

@OneToOne(cascade = = "addr_id") private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a

@OneToOne(cascade = = addr_id) private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a 1 대 1 단방향, 주테이블에외래키실습 http://ojcedu.com, http://ojc.asia STS -> Spring Stater Project name : onetoone-1 SQL : JPA, MySQL 선택 http://ojc.asia/bbs/board.php?bo_table=lecspring&wr_id=524 ( 마리아 DB 설치는위 URL

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 05 장 CSS3 선택자 1. 선택자개요 2. 기본선택자 3. 속성선택자 4. 후손선택자와자손선택자 5. 반응 / 상태 / 구조선택자 CSS 블록을생성할수있다. 선택자를이해하고적절한선택자를활용할수있다. 1 선택자개요 CSS3 선택자 특정한 HTML 태그를선택할때사용하는기능 선택한태그에원하는스타일이나스크립트적용가능 그림 5-1 CSS 블록 CSS 블록 style

More information

PowerPoint Template

PowerPoint Template JavaScript 회원정보 입력양식만들기 HTML & JavaScript Contents 1. Form 객체 2. 일반적인입력양식 3. 선택입력양식 4. 회원정보입력양식만들기 2 Form 객체 Form 객체 입력양식의틀이되는 태그에접근할수있도록지원 Document 객체의하위에위치 속성들은모두 태그의속성들의정보에관련된것

More information

JAVA Bean & Session - Cookie

JAVA Bean & Session - Cookie JAVA Bean & Session - Cookie [ 우주최강미남 ] 발표내용소개 자바빈 (Java Bean) 자바빈의개요 자바빈의설계규약 JSP 에서자바빈사용하기 자바빈의영역 세션과쿠키 (Session & Cookie) 쿠키의개요 쿠키설정 (HTTP 서블릿 API) 세션의개요 JSP 에서의세션관리 Java Bean Q. 웹사이트를개발한다는것과자바빈?? 웹사이트라는것은크게디자이너와프로그래머가함께개발합니다.

More information

(8) getpi() 함수는정적함수이므로 main() 에서호출할수있다. (9) class Circle private double radius; static final double PI= ; // PI 이름으로 로초기화된정적상수 public

(8) getpi() 함수는정적함수이므로 main() 에서호출할수있다. (9) class Circle private double radius; static final double PI= ; // PI 이름으로 로초기화된정적상수 public Chapter 9 Lab 문제정답 1. public class Circle private double radius; static final double PI=3.141592; // PI 이름으로 3.141592 로초기화된정적상수 (1) public Circle(double r) radius = r; (2) public double getradius() return

More information

cover story3 자바기술의미래를비추는거울 스프링프레임워크 2.5 스프링프레임워크 (SpringFramework) 의세번째메이저업그레이드인스프링 (Spring) 2.5 가지난 11 월말에릴리즈되었다. 스프링의캐치프레이 즈처럼더욱간결해지고더욱강력해진 (simpler

cover story3 자바기술의미래를비추는거울 스프링프레임워크 2.5 스프링프레임워크 (SpringFramework) 의세번째메이저업그레이드인스프링 (Spring) 2.5 가지난 11 월말에릴리즈되었다. 스프링의캐치프레이 즈처럼더욱간결해지고더욱강력해진 (simpler cover story3 자바기술의미래를비추는거울 스프링프레임워크 2.5 스프링프레임워크 (SpringFramework) 의세번째메이저업그레이드인스프링 (Spring) 2.5 가지난 11 월말에릴리즈되었다. 스프링의캐치프레이 즈처럼더욱간결해지고더욱강력해진 (simpler and more powerful) 스프링 2.5 의달라진모습과 2008 년에새롭게등장하는스프링포트폴리오에

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 Power Java 제 20 장패키지 이번장에서학습할내용 패키지의개념 패키지로묶는방법 패키지사용 기본패키지 유틸리티패키지 패키지는연관된클래스들을묶는기법입니다. 패키지란? 패키지 (package) : 클래스들을묶은것 자바라이브러리도패키지로구성 ( 예 ) java.net 패키지 네트워크관련라이브러리 그림 20-1. 패키지의개념 예제 패키지생성하기 Q: 만약패키지문을사용하지않은경우에는어떻게되는가?

More information

혼자서일을다하는 JSP. 이젠일을 Servlet 과나눠서한다. JSP와서블릿의표현적인차이 - JSP는 <html> 내에서자바를사용할수있는수단을제공한다. - 서블릿은자바내에서 <html> 을작성할수있는수단을제공한다. - JSP나서블릿으로만웹페이지를작성하면자바와다양한코드가

혼자서일을다하는 JSP. 이젠일을 Servlet 과나눠서한다. JSP와서블릿의표현적인차이 - JSP는 <html> 내에서자바를사용할수있는수단을제공한다. - 서블릿은자바내에서 <html> 을작성할수있는수단을제공한다. - JSP나서블릿으로만웹페이지를작성하면자바와다양한코드가 혼자서일을다하는 JSP. 이젠일을 Servlet 과나눠서한다. JSP와서블릿의표현적인차이 - JSP는 내에서자바를사용할수있는수단을제공한다. - 서블릿은자바내에서 을작성할수있는수단을제공한다. - JSP나서블릿으로만웹페이지를작성하면자바와다양한코드가웹페이지내에뒤섞여있어서웹페이지의화면설계가점점어려워진다. - 서블릿이먼저등장하였으나, 자바내에

More information

No Slide Title

No Slide Title 상속 이충기 명지대학교컴퓨터공학과 상속 Q: 건설회사는기존아파트와조금다르거나추가적인특징들을가진새아파트를지을때어떻게하는가? A: 2 상속 상속 (inheritance) 은클래스들을연관시키는자연스럽고계층적인방법이다. 상속은객체지향프로그래밍의가장중요한개념중의하나이다. 상속은 은 이다 라는관계 (is-a relationship) 를나타낸다. 이관계를적용하여클래스들을상하관계로연결하는것이상속이다.

More information

PowerPoint Presentation

PowerPoint Presentation public class SumTest { public static void main(string a1[]) { int a, b, sum; a = Integer.parseInt(a1[0]); b = Integer.parseInt(a1[1]); sum = a + b ; // 두수를더하는부분입니다 System.out.println(" 두수의합은 " + sum +

More information

<4D F736F F F696E74202D2036C0CFC2B05FB0B4C3BCC1F6C7E2C7C1B7CEB1D7B7A1B9D62E707074>

<4D F736F F F696E74202D2036C0CFC2B05FB0B4C3BCC1F6C7E2C7C1B7CEB1D7B7A1B9D62E707074> 객체지향프로그램밍 (Object-Oriented Programming) 1 C++ popular C 객체지향 (object oriented) C++ C : 상위계층언어특징 + 어셈블리언어특징 C++ : 소프트웨어개발플랫폼에객체지향개념제공 객체지향 : 자료와이들자료를어떻게다룰것인지따로생각하지않고단지하나의사물로생각 형 변수가사용하는메모리크기 변수가가질수있는정보

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 실습 1 배효철 th1g@nate.com 1 목차 조건문 반복문 System.out 구구단 모양만들기 Up & Down 2 조건문 조건문의종류 If, switch If 문 조건식결과따라중괄호 { 블록을실행할지여부결정할때사용 조건식 true 또는 false값을산출할수있는연산식 boolean 변수 조건식이 true이면블록실행하고 false 이면블록실행하지않음 3

More information

C# Programming Guide - Types

C# Programming Guide - Types C# Programming Guide - Types 최도경 lifeisforu@wemade.com 이문서는 MSDN 의 Types 를요약하고보충한것입니다. http://msdn.microsoft.com/enus/library/ms173104(v=vs.100).aspx Types, Variables, and Values C# 은 type 에민감한언어이다. 모든

More information

gnu-lee-oop-kor-lec06-3-chap7

gnu-lee-oop-kor-lec06-3-chap7 어서와 Java 는처음이지! 제 7 장상속 Super 키워드 상속과생성자 상속과다형성 서브클래스의객체가생성될때, 서브클래스의생성자만호출될까? 아니면수퍼클래스의생성자도호출되는가? class Base{ public Base(String msg) { System.out.println("Base() 생성자 "); ; class Derived extends Base

More information

PowerPoint Presentation

PowerPoint Presentation Package Class 3 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section

More information

Microsoft PowerPoint - Java7.pptx

Microsoft PowerPoint - Java7.pptx HPC & OT Lab. 1 HPC & OT Lab. 2 실습 7 주차 Jin-Ho, Jang M.S. Hanyang Univ. HPC&OT Lab. jinhoyo@nate.com HPC & OT Lab. 3 Component Structure 객체 (object) 생성개념을이해한다. 외부클래스에대한접근방법을이해한다. 접근제어자 (public & private)

More information

Microsoft Word - How to make a ZigBee Network_kr

Microsoft Word - How to make a ZigBee Network_kr 1 단계 ZigBee 네트워크설정방법 이보기는 ProBee 기기를이용해 ZigBee 네트워크를설정하는방법을보여줍니다. 2 단계 이보기에서사용된 SENA 제품입니다 : ProBee ZE10 Starter Kit ProBee ZS10 ProBee ZU10 3 단계 ZigBee 네트워크입니다. SE1 SE2 SE3 ZS10 ZS10 ZS10 R4 R5 R3 R1

More information

Microsoft PowerPoint 웹 연동 기술.pptx

Microsoft PowerPoint 웹 연동 기술.pptx 웹프로그래밍및실습 ( g & Practice) 문양세강원대학교 IT 대학컴퓨터과학전공 URL 분석 (1/2) URL (Uniform Resource Locator) 프로토콜, 호스트, 포트, 경로, 비밀번호, User 등의정보를포함 예. http://kim:3759@www.hostname.com:80/doc/index.html URL 을속성별로분리하고자할경우

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 인터페이스 배효철 th1g@nate.com 1 목차 인터페이스의역할 인터페이스선언 인터페이스구현 인터페이스사용 타입변환과다형성 인터페이스상속 디폴트메소드와인터페이스확장 2 인터페이스의역할 인터페이스란? 개발코드와객체가서로통신하는접점 개발코드는인터페이스의메소드만알고있으면 OK 인터페이스의역할 개발코드가객체에종속되지않게 -> 객체교체할수있도록하는역할 개발코드변경없이리턴값또는실행내용이다양해질수있음

More information

Web Application을 구성하는 패턴과 Spring ROO의 사례

Web Application을 구성하는 패턴과 Spring ROO의 사례 Spring Roo 와함께하는 쾌속웹개발 정상혁, KSUG (www.ksug.org) 목차 1. Tool 2. Demo 3. Application 1. Tool 1.1 개요 1.2 Command line shell 1.3 Round-trip 1.4 익숙한도우미들 1.1 개요 Text Based RAD Tool for Java Real Object Oriented의첫글자들

More information

제2장객체지향분석과설계

제2장객체지향분석과설계 제 3 주차강의교안 1. 교수목표 : Object-Oriented Analysis and Design(OOAD) 란무엇인가를이해하고클래스생성방법을터득한다. 2. 강의시수 : 이론 - 1시간, 실습 - 2시간, Test - 1시간 3. 수업내용 이론 Object-Oriented Analysis and Design(OOAD) 란 실습 class 생성하기 Test

More information

슬라이드 제목 없음

슬라이드 제목 없음 5.2 ER 모델 ( 계속 ) 관계와관계타입 관계는엔티티들사이에존재하는연관이나연결로서두개이상의엔티티타입들사이의사상으로생각할수있음 관계집합은동질의관계들의집합 관계타입은동질의관계들의틀 관계집합과관계타입을엄격하게구분할필요는없음 요구사항명세에서흔히동사는 ER 다이어그램에서관계로표현됨 ER 다이어그램에서다이어몬드로표기 관계타입이서로연관시키는엔티티타입들을관계타입에실선으로연결함

More information

consulting

consulting CONSULTING 전략 컨설팅 클라우드 마이그레이션 애플리케이션 마이그레이션 데이터 마이그레이션 HELPING YOU ADOPT CLOUD. 클라우드로 가기로 결정했다면 누구와 함께 갈지를 선택해야 합니다. 처음부터 끝까지 믿을만한 파트너를 찾는다면 베스핀글로벌이 정답입니다. 전략 컨설팅 다양한 클라우드 공급자가 존재하고, 클라우드 공급자마다 다른 장단점을

More information

PowerPoint Presentation

PowerPoint Presentation Package Class 1 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section

More information

2013 <D55C><ACBD><C5F0><BC31><C11C>(<CD5C><C885>).pdf

2013 <D55C><ACBD><C5F0><BC31><C11C>(<CD5C><C885>).pdf 2013 ANNUAL REPORT Contents 006 007 007 008 009 Part 1 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031 032 033 034 035 036 037 038 039 040 041 042 043 044 Part 2 048 049 050 051 052 053

More information

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 (   ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각 JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.

More information

SIGIL 완벽입문

SIGIL 완벽입문 누구나 만드는 전자책 SIGIL 을 이용해 전자책을 만들기 EPUB 전자책이 가지는 단점 EPUB이라는 포맷과 제일 많이 비교되는 포맷은 PDF라는 포맷 입니다. EPUB이 나오기 전까지 전 세계에서 가장 많이 사용되던 전자책 포맷이고, 아직도 많이 사 용되기 때문이기도 한며, 또한 PDF는 종이책 출력을 위해서도 사용되기 때문에 종이책 VS

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 클래스, 객체, 메소드 손시운 ssw5176@kangwon.ac.kr 실제세계는객체로이루어진다. 2 객체와메시지 3 객체지향이란? 실제세계를모델링하여소프트웨어를개발하는방법 4 객체 5 객체란? 객체 (Object) 는상태와동작을가지고있다. 객체의상태 (state) 는객체의특징값 ( 속성 ) 이다. 객체의동작 (behavior) 또는행동은객체가취할수있는동작

More information

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx #include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의

More information

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures 단일연결리스트 (Singly Linked List) 신찬수 연결리스트 (linked list)? tail 서울부산수원용인 null item next 구조체복습 struct name_card { char name[20]; int date; } struct name_card a; // 구조체변수 a 선언 a.name 또는 a.date // 구조체 a의멤버접근 struct

More information

어댑터뷰

어댑터뷰 04 커스텀어댑터뷰 (Custom Adapter View) 커스텀어댑터뷰 (Custom Adapter View) 커스텀어댑터뷰 (Custom Adatper View) 란? u 어댑터뷰의항목하나는단순한문자열이나이미지뿐만아니라, 임의의뷰가될수 있음 이미지뷰 u 커스텀어댑터뷰설정절차 1 2 항목을위한 XML 레이아웃정의 어댑터정의 3 어댑터를생성하고어댑터뷰객체에연결

More information

TTA Journal No.157_서체변경.indd

TTA Journal No.157_서체변경.indd 표준 시험인증 기술 동향 FIDO(Fast IDentity Online) 생체 인증 기술 표준화 동향 이동기 TTA 모바일응용서비스 프로젝트그룹(PG910) 의장 SK텔레콤 NIC 담당 매니저 76 l 2015 01/02 PASSWORDLESS EXPERIENCE (UAF standards) ONLINE AUTH REQUEST LOCAL DEVICE AUTH

More information

PowerPoint Presentation

PowerPoint Presentation Spring Framework 의이해 - 강사김현오 - 1. 스프링프레임워크개요 1.1 스프링프레임워크개요 1.2 스프링시작하기 스프링의등장배경 POJO 프레임워크 스프링프레임워크 스프링의등장배경 (1/2) 자바엔터프라이즈애플리케이션개발표준인 EJB EJB 를사용하면애플리케이션작성을쉽게할수있다. 저수준의트랜잭션이나상태관리, 멀티쓰레딩, 리소스풀링과같은복잡한저수준의

More information

예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1"); void method() 2"); void method1() public class Test 3"); args) A

예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1); void method() 2); void method1() public class Test 3); args) A 제 10 장상속 예제 1) ConstructorTest.java class Parent public Parent() super - default"); public Parent(int i) this("hello"); super(int) constructor" + i); public Parent(char c) this(); super(char) constructor

More information

정부3.0 국민디자인단 운영을 통해 국민과의 소통과 참여로 정책을 함께 만들 수 있었고 그 결과 국민 눈높이에 맞는 다양한 정책 개선안을 도출하며 정책의 완성도를 제고할 수 있었습니다. 또한 서비스디자인 방법론을 각 기관별 정부3.0 과제에 적용하여 국민 관점의 서비스 설계, 정책고객 확대 등 공직사회에 큰 반향을 유도하여 공무원의 일하는 방식을 변화시키고

More information

JVM 메모리구조

JVM 메모리구조 조명이정도면괜찮조! 주제 JVM 메모리구조 설미라자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조장. 최지성자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조원 이용열자료조사, 자료작성, PPT 작성, 보고서작성. 이윤경 자료조사, 자료작성, PPT작성, 보고서작성. 이수은 자료조사, 자료작성, PPT작성, 보고서작성. 발표일 2013. 05.

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 클래스와메소드심층연구 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 접근제어 class A { private int a; int b; public int c; // 전용 // 디폴트 // 공용 public class Test { public static void main(string args[]) { A obj = new

More information

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론 이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론 2. 관련연구 2.1 MQTT 프로토콜 Fig. 1. Topic-based Publish/Subscribe Communication Model. Table 1. Delivery and Guarantee by MQTT QoS Level 2.1 MQTT-SN 프로토콜 Fig. 2. MQTT-SN

More information

Microsoft PowerPoint - JCO2007_Spring2.0_발표자료_Rev-A.ppt [호환 모드]

Microsoft PowerPoint - JCO2007_Spring2.0_발표자료_Rev-A.ppt [호환 모드] From Spring 1.x Spring 2.0 To 이일민 (Consultant, Epril) 안영회 (Consultant, Epril) 2 목차 q Spring의목표와전략 q Spring 2.0 q Core Container and DI q AOP q Portable Service Abstractions q Web q Spring Portfolio 3 Spring

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 오류처리 손시운 ssw5176@kangwon.ac.kr 오류메시지를분석한다. 오류메시지에서많은내용을알수있다. 2 디버깅 디버거를사용하면프로그램에서쉽게오류를감지하고진단할수있다. 디버거는중단점을설정하여서프로그램의실행을제어할수있으며문장 단위로실행하거나변수의값을살펴볼수있다. 3 이클립스에서디버깅 4 이클립스에서디버깅 5 이클립스의디버깅명령어 6 예외처리

More information

JDBC 소개및설치 Database Laboratory

JDBC 소개및설치 Database Laboratory JDBC 소개및설치 JDBC } What is the JDBC? } JAVA Database Connectivity 의약어 } 자바프로그램안에서 SQL 을실행하기위해데이터베이스를연결해주는응용프로그램인터페이스 } 연결된데이터베이스의종류와상관없이동일한방법으로자바가데이터베이스내에서발생하는트랜잭션을제어할수있도록하는환경을제공 2 JDBC Driver Manager }

More information

슬라이드 1

슬라이드 1 모바일소프트웨어프로젝트 지도 API 1 조 20070216 김성수 20070383 김혜준 20070965 이윤상 20071335 최진 1 매시업? 공개 API? 2 매시업 웹으로제공하고있는정보와서비스를융합하여새로운소프트웨어나서비스, 데이터베이스등을만드는것 < 최초의매시업 > 3 공개 API 누구나사용할수있도록공개된 API 지도, 검색등다양한서비스들에서제공 대표적인예

More information

untitled

untitled 시스템소프트웨어 : 운영체제, 컴파일러, 어셈블러, 링커, 로더, 프로그래밍도구등 소프트웨어 응용소프트웨어 : 워드프로세서, 스프레드쉬트, 그래픽프로그램, 미디어재생기등 1 n ( x + x +... + ) 1 2 x n 00001111 10111111 01000101 11111000 00001111 10111111 01001101 11111000

More information

Windows Live Hotmail Custom Domains Korea

Windows Live Hotmail Custom Domains Korea 매쉬업코리아2008 컨퍼런스 Microsoft Windows Live Service Open API 한국 마이크로소프트 개발자 플랫폼 사업 본부 / 차세대 웹 팀 김대우 (http://www.uxkorea.net 준서아빠 블로그) Agenda Microsoft의 매쉬업코리아2008 특전 Windows Live Service 소개 Windows Live Service

More information

JAVA PROGRAMMING 실습 05. 객체의 활용

JAVA PROGRAMMING 실습 05. 객체의 활용 2015 학년도 2 학기 public class Person{ public String name; public int age; public Person(){ public Person(String s, int a){ name = s; age = a; public String getname(){ return name; @ 객체의선언 public static void

More information

Chapter 4. LISTS

Chapter 4. LISTS C 언어에서리스트구현 리스트의생성 struct node { int data; struct node *link; ; struct node *ptr = NULL; ptr = (struct node *) malloc(sizeof(struct node)); Self-referential structure NULL: defined in stdio.h(k&r C) or

More information

SOFTBASE XFRAME DEVELOPMENT GUIDE SERIES ActiveX 컴포넌트가이드 서울특별시구로구구로 3 동한신 IT 타워 1215 호 Phone Fax

SOFTBASE XFRAME DEVELOPMENT GUIDE SERIES ActiveX 컴포넌트가이드 서울특별시구로구구로 3 동한신 IT 타워 1215 호 Phone Fax SOFTBASE XFRAME DEVELOPMENT GUIDE SERIES 2012.02.18 서울특별시구로구구로 3 동한신 IT 타워 1215 호 Phone 02-2108-8030 Fax 02-2108-8031 www.softbase.co.kr Copyright 2010 SOFTBase Inc. All rights reserved 목차 1 장 : ActiveX

More information

슬라이드 1

슬라이드 1 DOMAIN MODEL 패턴과 JPA 의조화객체지향적인도메인레이어구축하기 조영호 Eternity s Chit-Chat(http://aeternum.egloos.com) 목차 1. 온라인영화예매시스템도메인 2. 임피던스불일치Impedance Mismatch 3. JPA Java Persistence API 4. 결롞 1. 온라인영화예매시스템도메인 Domain

More information

교육자료

교육자료 THE SYS4U DODUMENT Java Reflection & Introspection 2012.08.21 김진아사원 2012 SYS4U I&C All rights reserved. 목차 I. 개념 1. Reflection 이란? 2. Introspection 이란? 3. Reflection 과 Introspection 의차이점 II. 실제사용예 1. Instance의생성

More information

. 스레드 (Thread) 란? 스레드를설명하기전에이글에서언급되는용어들에대하여알아보도록하겠습니다. - 응용프로그램 ( Application ) 사용자에게특정서비스를제공할목적으로구현된응용프로그램을말합니다. - 컴포넌트 ( component ) 어플리케이션을구성하는기능별요

. 스레드 (Thread) 란? 스레드를설명하기전에이글에서언급되는용어들에대하여알아보도록하겠습니다. - 응용프로그램 ( Application ) 사용자에게특정서비스를제공할목적으로구현된응용프로그램을말합니다. - 컴포넌트 ( component ) 어플리케이션을구성하는기능별요 . 스레드 (Thread) 란? 스레드를설명하기전에이글에서언급되는용어들에대하여알아보도록하겠습니다. - 응용프로그램 ( Application ) 사용자에게특정서비스를제공할목적으로구현된응용프로그램을말합니다. - 컴포넌트 ( component ) 어플리케이션을구성하는기능별요소로써안드로이드시스템에서는 Activities, Services, Content Providers,

More information

No Slide Title

No Slide Title 클래스와객체 이충기 명지대학교컴퓨터공학과 들어가며 Q: 축구게임에서먼저공격하는팀을정하기위해동전을던진다. 우리는동전을던질때앞면이나오느냐아니면뒷면이나오느냐에만관심이있다. 또한동전을가지고해야할일은동전을던지는것과동전을던진후결과를알면된다. 이동전을효과적으로나타낼수있는방법을기술하라. A: 2 클래스와객체 객체 (object): 우리주변의어떤대상의모델이다. - 예 : 학생,

More information

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a 6 장복사생성자 객체의생성과대입객체의값에의한전달복사생성자디폴트복사생성자복사생성자의재정의객체의값에의한반환임시객체 C++ 프로그래밍입문 1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y;

More information

쉽게 풀어쓴 C 프로그래밊

쉽게 풀어쓴 C 프로그래밊 Power Java 제 27 장데이터베이스 프로그래밍 이번장에서학습할내용 자바와데이터베이스 데이터베이스의기초 SQL JDBC 를이용한프로그래밍 변경가능한결과집합 자바를통하여데이터베이스를사용하는방법을학습합니다. 자바와데이터베이스 JDBC(Java Database Connectivity) 는자바 API 의하나로서데이터베이스에연결하여서데이터베이스안의데이터에대하여검색하고데이터를변경할수있게한다.

More information

PowerPoint Template

PowerPoint Template 9. 객체지향프로그래밍 대구가톨릭대학교 IT 공학부 소프트웨어공학연구실 목차 2 9.1 개요 9.2 객체지향프로그래밍언어 9.3 추상자료형 9.4 상속 9.5 동적바인딩 9.1 객체지향의개념 (1) 3 객체지향의등장배경 소프트웨어와하드웨어의발전불균형 소프트웨어모듈의재사용과독립성을강조 객체 (object) 란? 우리가다루는모든사물을일컫는말 예 ) 하나의점, 사각형,

More information

SOFTBASE XFRAME DEVELOPMENT GUIDE SERIES HTML 연동가이드 서울특별시구로구구로 3 동한신 IT 타워 1215 호 Phone Fax Co

SOFTBASE XFRAME DEVELOPMENT GUIDE SERIES HTML 연동가이드 서울특별시구로구구로 3 동한신 IT 타워 1215 호 Phone Fax Co SOFTBASE XFRAME DEVELOPMENT GUIDE SERIES 2012.02.18 서울특별시구로구구로 3 동한신 IT 타워 1215 호 Phone 02-2108-8030 Fax 02-2108-8031 www.softbase.co.kr Copyright 2010 SOFTBase Inc. All rights reserved 목차 1 장 : HTML 연동개요...

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 제 5 장생성자와접근제어 1. 객체지향기법을이해한다. 2. 클래스를작성할수있다. 3. 클래스에서객체를생성할수있다. 4. 생성자를이용하여객체를초기화할수 있다. 5. 접근자와설정자를사용할수있다. 이번장에서만들어볼프로그램 생성자 생성자 (constructor) 는초기화를담당하는함수 생성자가필요한이유 #include using namespace

More information

작성자 : 김성박\(삼성 SDS 멀티캠퍼스 전임강사\)

작성자 : 김성박\(삼성 SDS 멀티캠퍼스 전임강사\) Session 을이용한현재로그인한사용자의 숫자구하기 작성자 : 김성박 ( 삼성 SDS 멀티캠퍼스전임강사 ) email : urstory@nownuri.net homepage : http://sunny.sarang.net - 본문서는http://sunny.sarang.net JAVA강좌란 혹은 http://www.javastudy.co.kr 의 칼럼 란에서만배포합니다.

More information

?

? 2015. JULY VOL. 125 IBK Economic Research Institute CONTENTS 2015. July vol.125 M MANAGEMENT LOUNGE 018 020 022 024 E ECONOMY LOUNGE 026 028 030 C CEO LOUNGE 034 036 038 010 012 016 BUSINESS B MANUAL 002

More information

Microsoft PowerPoint - Lect04.pptx

Microsoft PowerPoint - Lect04.pptx OBJECT ORIENTED PROGRAMMING Object Oriented Programming 이강의록은 Power Java 저자의강의록을사용했거나재편집된것입니다. Class 와 object Class 와객체 클래스의일생 메소드 필드 String Object Class 와객체 3 클래스 클래스의구성 클래스 (l (class): 객체를만드는설계도 클래스로부터만들어지는각각의객체를특별히그클래스의인스턴스

More information

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher( 실행할페이지.jsp); 다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp"); dispatcher.forward(request, response); - 위의예에서와같이 RequestDispatcher

More information

WINDOW FUNCTION 의이해와활용방법 엑셈컨설팅본부 / DB 컨설팅팀정동기 개요 Window Function 이란행과행간의관계를쉽게정의할수있도록만든함수이다. 윈도우함수를활용하면복잡한 SQL 들을하나의 SQL 문장으로변경할수있으며반복적으로 ACCESS 하는비효율역

WINDOW FUNCTION 의이해와활용방법 엑셈컨설팅본부 / DB 컨설팅팀정동기 개요 Window Function 이란행과행간의관계를쉽게정의할수있도록만든함수이다. 윈도우함수를활용하면복잡한 SQL 들을하나의 SQL 문장으로변경할수있으며반복적으로 ACCESS 하는비효율역 WINDOW FUNCTION 의이해와활용방법 엑셈컨설팅본부 / DB 컨설팅팀정동기 개요 Window Function 이란행과행간의관계를쉽게정의할수있도록만든함수이다. 윈도우함수를활용하면복잡한 SQL 들을하나의 SQL 문장으로변경할수있으며반복적으로 ACCESS 하는비효율역시쉽게해결할수있다. 이번화이트페이퍼에서는 Window Function 중순위 RANK, ROW_NUMBER,

More information

PowerPoint Presentation

PowerPoint Presentation 오에스아이소프트코리아세미나세미나 2012 Copyright Copyright 2012 OSIsoft, 2012 OSIsoft, LLC. LLC. PI Coresight and Mobility Presented by Daniel Kim REGIONAL 세미나 SEMINAR 세미나 2012 2012 2 Copyright Copyright 2012 OSIsoft,

More information

Microsoft PowerPoint - TimeTable System.pptx

Microsoft PowerPoint - TimeTable System.pptx 6조 강세용 김규수 valentan . 개발준비 2. 구현과정 3. Class-Object 비교 사용언어 : JAVA 사용도구 : Eclipse, NetBeans 제작기간 : 4 일? 기존의설계도를최대한적용하여설계. StarUML의코드제너레이션으로나온코드들을최대한건들지않으려고노력했습니다. 또한시퀸스다이어그램의구조를최대한따라구현하였습니다. Person +name:

More information

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2 학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2 6.1 함수프로시저 6.2 서브프로시저 6.3 매개변수의전달방식 6.4 함수를이용한프로그래밍 3 프로시저 (Procedure) 프로시저 (Procedure) 란무엇인가? 논리적으로묶여있는하나의처리단위 내장프로시저 이벤트프로시저, 속성프로시저, 메서드, 비주얼베이직내장함수등

More information

오토10. 8/9월호 내지8/5

오토10. 8/9월호 내지8/5 I ndustry Insight Telematics Detroit 2010: 스마트폰이 바꿔가는 車 내비게이션의 장래가 스마트폰과 애플리케이션으로 인해 불투명해지고 있지만, 오히려 이것은 텔레매틱스 서비스의 질적 향상과 대중화를 이끌고 있다. 지난 6월 미시간 주 노비에서 열린 텔레매틱스 디트로이트 2010 에서 패널들은 포터블 디바이스가 기 존 차량의 텔레매틱스

More information

IP 심화 라우팅프로토콜적용시 라우팅테이블에서 이니셜이있는네트워크를설정하는것 : onnected 직접연결된네트워크를의미한다. 그러므로라우팅은 나는이런네트워크와연결되어있다. 를직접연결된라우터들에게알려주는것 1>en 1#conf t 1(config)#router rip 1

IP 심화 라우팅프로토콜적용시 라우팅테이블에서 이니셜이있는네트워크를설정하는것 : onnected 직접연결된네트워크를의미한다. 그러므로라우팅은 나는이런네트워크와연결되어있다. 를직접연결된라우터들에게알려주는것 1>en 1#conf t 1(config)#router rip 1 IP 심화 º 각 P 의게이트웨이는해당네트워크의마지막주소를사용한다. - P1 (210.220.10.1/26) 의게이트웨이 (5의 Fa0/0) : 210.220.10.63 /26 = 255.255.255.192 호스트비트수 : 32-26 = 6 비트 => = 64 그러므로 P1의 IP 210.220.10.1 중서브넷마스크에의거 26비트는변함이없고, 나머지 6비트가호스트비트로변하므로

More information

Microsoft PowerPoint - web-part02-ch15-문서객체조작.pptx

Microsoft PowerPoint - web-part02-ch15-문서객체조작.pptx 과목명 : 웹프로그래밍응용교재 : 모던웹을위한 JavaScript Jquery 입문, 한빛미디어 Part2. jquery Ch15. 문서객체조작 2014년 1학기 Professor Seung-Hoon Choi 15 문서객체조작 문서객체조작 자바스크립트만으로문서객체모델을다루려면복잡함 jquery를이용하면쉽게다룰수있다. 이책에서가장중요한부분 15.1 문서객체의클래스속성추가

More information

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일 Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 Introduce Me!!! Job Jeju National University Student Ubuntu Korean Jeju Community Owner E-Mail: ned3y2k@hanmail.net Blog: http://ned3y2k.wo.tc Facebook: http://www.facebook.com/gyeongdae

More information

coverbacktong최종spread

coverbacktong최종spread 12-B553003-000001-08 함께하자! 대한민국! Summer COVER STORY Contents www.pcnc.go.kr facebook.com/pcnc11 instagram.com/pcnc_official youtube.com/pcnctv cover story communication people culture news & epilogue 2016

More information

Design Issues

Design Issues 11 COMPUTER PROGRAMMING INHERIATANCE CONTENTS OVERVIEW OF INHERITANCE INHERITANCE OF MEMBER VARIABLE RESERVED WORD SUPER METHOD INHERITANCE and OVERRIDING INHERITANCE and CONSTRUCTOR 2 Overview of Inheritance

More information