Object
자바는 흔히 객체지향 언어라고 합니다. 그럼 객체란 무엇인가요? 객체(Object)를 가장 쉽게 이해할수 있는 방법은 우리주위를 그냥 무엇이 있는지 둘러보고 무엇이 있는지 보는 겁니다. 컵이 보이고 볼펜이 보이고 창문을 통해 옆집이 보입니다. 이것들이 다 객체들입니다. 소프트웨어세계의 객체는 이러한 실생활속에 객체와 그리 다르지 않습니다. 일단은 실생활 속의 객체들을 소프트웨어 세계로 추상화한것이라 생각하면 쉽습니다.
객체는 상태(State)와 행위(Behavior)의 두가지 속성을 가집니다. 상태에 대한 답을 하기위해 이런 질문을 던져봅니다. 이 객체는 어떤 상태에 있습니까? 그 객체가 자전거이라면 그 색깔, 크기, 변속기의 유무, 달려있는 변속단수가 상태가 될수 있을겁니다. 행위라면 그 객체가 할수 있는 행위, 가는것, 서는 것, 페달이 돌아가는것, 등등이 될겁니다.
이 실생활의 상태와 행위개념은 소프트웨어의 세계로 들어어면서 필드와 메소드의 개념으로 대치됩니다. 필드는 자정거의 색깔이 되는 것이고 그안에 파란색이다, 빨간색이다의 변수(Variable) 개념이 들어가면서 상태가 소프트웨어적으로 정의 되는 겁니다. 행위는 소프트웨어 객체가 할 수 있는 일이 됩니다. 행위는 객체 내부의 행위일수도 다른 객체와 의사소통을 하는 일이 될수도 있습니다.
Class
이제는 개념적으로 정의한것을 하나하나 더 구체적으로 소프트웨어의 세계로 접목시키는 방법을 볼 단계가 되었습니다. 객체라고 했는데, 그 객체를 자전거 전부로 뭉뚱그려서 정의해야할지 산악자전거, 세발자전거, 로드 자전거로 분류하여 정의할지 모호합니다. 이를 위해 클라스(Class)와 상속(Inheritance)의 개념이 동원됩니다. 일단은 다 뭉뚱그려서 자전거를 하나의 클라스로 만들고, 가장 포괄적인 상태와 행위만을 정의합니다. 이를 수퍼클라스로 하고 그 성격을 상속하여 하위에 좀더 세분화된 클라스를 놓습니다. 산악자전거, 로드자전거, 세발자전거 들이 그것입니다. 이 레벨의 클라스를 정의하면서 산악, 로드만의 독특한 상태들와 행위들을 추가적으로 집어넣습니다. 이런식으로 계속 세분화시켜가면서 프로그램내에서 이용하기 쉬울 정도의 성격을 가진 세부적인 객체를 만들어나갑니다.
이 상속의 관계를 자바의 세계에서는 다음의 표현으로 구현합니다.
class MountainBike extends Bicycle {
// new fields and methods defining a mountain bike would go here
}
// new fields and methods defining a mountain bike would go here
}
Interface
인터페이스(Interface)는 하나의 객체가 그 외부의 세계와 어떤 행위를 가하거나 당하는것을 말합니다. 자전거라면 기어 단을 바꾸는것, 회전수를 늘리는것, 브레이크를 밟는것이 될겁니다. 이를 자바코드에서는 다음과 같이 구현합니다.
interface Bicycle {
void changeCadence(int newValue);
void changeGear(int newValue);
void speedUp(int increment);
void applyBrakes(int decrement);
}
void changeCadence(int newValue);
void changeGear(int newValue);
void speedUp(int increment);
void applyBrakes(int decrement);
}
그리고 자전거 클라스에는 다음과 같이 연결합니다.
class ACMEBicycle implements Bicycle {
// remainder of this class implemented as before
}
// remainder of this class implemented as before
}
Package
패키지는 위에서 언급하였던 소프트웨어적인 요소를 관련있는것을 모야 하나의 패키지라 이름지워놓은 것으로 뭉뚱그려 모아놓은것을 말합니다. 이 안에는 많은 클라스들이, 자건거의 이미지가, 자전거가 할수있는 행위들의 묶음인 인터페이스가, 자전거의 상태들에 대한 정의들이 들어갈수도 잇습니다
리뷰
마지막으로 다음문장들을 곰곰히 생각해보면서 이제까지 배운것을 정리합니다..
.
실세계의 객체는 상태와 행위를 포함합니다.
Real-world objects contain state and behavior.
.
소프트웨어 객체의 상태는 필드에 저장되어잇습니다.
A software object's state is stored in fields.
.
소프트웨어 객체의 행위는 메소드를 이용하여 구현됩니다. .
A software object's behavior is exposed through methods.
.
소프트웨어세계에서 객체의 모습을 구체화시키는 것은 클라스를 통해 합니다.
A blueprint for a software object is called a class.
.
가장일반적으로 공유되는 행위는 수퍼클라스에서 정의되어지고 상속을 통하여 하위클라스로 공유됩니다. 이 과정에서 extends 라는 키 워드를 사용합니다.Common behavior can be defined in a superclass and inherited into a subclass using the extends keyword.
.
메소드를 모두 모아 놓은 것을 인터페이스라 합니다. 하지만 그 메소드의 행위가 어떤것인지 그 단계단계의 절차까지 이내에 정의 되어있지는 않습니다.
A collection of methods with no implementation is called an interface.
.
실세계의 객체는 상태와 행위를 포함합니다.
Real-world objects contain state and behavior.
.
소프트웨어 객체의 상태는 필드에 저장되어잇습니다.
A software object's state is stored in fields.
.
소프트웨어 객체의 행위는 메소드를 이용하여 구현됩니다. .
A software object's behavior is exposed through methods.
.
소프트웨어세계에서 객체의 모습을 구체화시키는 것은 클라스를 통해 합니다.
A blueprint for a software object is called a class.
.
가장일반적으로 공유되는 행위는 수퍼클라스에서 정의되어지고 상속을 통하여 하위클라스로 공유됩니다. 이 과정에서 extends 라는 키 워드를 사용합니다.Common behavior can be defined in a superclass and inherited into a subclass using the extends keyword.
.
메소드를 모두 모아 놓은 것을 인터페이스라 합니다. 하지만 그 메소드의 행위가 어떤것인지 그 단계단계의 절차까지 이내에 정의 되어있지는 않습니다.
A collection of methods with no implementation is called an interface.
단어정리
객체(Object)
상태(State)
행위(Behavior)
필드(Field)
변수(Variable)
메소드(Method)
상속(Inheritance)
상호작용.인터페이스(Interface)
상태(State)
행위(Behavior)
필드(Field)
변수(Variable)
메소드(Method)
상속(Inheritance)
상호작용.인터페이스(Interface)
기업100%환급/오라클/자바/스프링/안드로이드/닷넷C#/jQUERY개발… | 12-27 | 1795 | ||
[채용예정교육]오라클자바개발잘하는신입뽑기2개월과정,교육전취… | 12-11 | 1304 | ||
53 | [평일주간]100%환급6건,안드로이드,자바,C#,스프링3.2,SQL,힌트/… | 03-15 | 1050 | |
52 | [주말주간]C#, ASP.NET마스터 | 01-31 | 1209 | |
51 | [평일,기업100%환급]SQL기초에서 Schema Object까지 | 01-31 | 1008 | |
50 | [평일야간]HTML5, CSS3,Ajax, jQuery마스터과정 | 01-31 | 904 | |
49 | [평일주간,평일야간,주말]Spring,MyBatis,Hibernate개발자과정 | 01-19 | 1211 | |
48 | [평일주간,평일야간,주말]안드로이드개발자과정 | 01-11 | 1071 | |
47 | [평일야간,주말주간]JAVA,Network&WEB&Framework | 01-03 | 1552 | |
46 | 기업100%환급/오라클/자바/스프링/안드로이드/닷넷C#/jQUERY개발… | 12-27 | 1795 | |
45 | [평일야간,주말]자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis… | 12-19 | 1318 | |
44 | 웹퍼블리싱 마스터(HTML5,CSS3,jQUERY,AJAX,JavaScript) | 12-14 | 1311 | |
43 | [채용예정교육]오라클자바개발잘하는신입뽑기2개월과정,교육전취… | 12-11 | 1304 | |
42 | [평일,기업100%환급]자바기초에서 JDBC, Servlet/JSP까지 | 12-09 | 1049 | |
41 | [평일야간]닷넷(C#,Network,ADO.NET,ASP.NET)마스터 | 12-01 | 1213 | |
40 | [기업100%환급]C#4.0,WinForm,ADO.NET프로그래밍(평일주간(단기)… | 12-01 | 1423 | |
39 | [평일야간,주말,주말야간]SQL기초에서실무까지(SQL기초,PLSQL,힌… | 12-01 | 927 |
댓글 없음:
댓글 쓰기