본문 바로가기

JAVA/OOP

(14)
상속 상속의 개념 상속의 정의- 객체지향의 가장 큰 특징 가운데 하나가 재사용성의 향상이다. 객체지향 기술이 도입되게 된 이유이기도 함.- 객체지향에서 이러한 재사용성을 향상시키기 위해 등장한 개념이 상속(Inheritance)이다. 상속은 동일한 데이터나 함수의 중복 정의를 피하고 공통된 데이터나 함수를 함 곳에 정의하여 재사용하는 개념이다. 클래스들로부터 공통된 속성과 함숟르을 추출하여 이들이 갖는 새로운 클래스를 정의할 수 있도록 하는 기법.down-top 방식의 의한 상속이라 하며, 일반화(Generalization) 특정 클래스로부터 세부적인 여러 형태의 클래스들로 분류하여 상속을 표현.top-down에 의한 상속이라 하며, 특수화(Specialization) 둘다 상속을 지칭하는 것으로서 상속관계를..
복합객체 복합객체의 개념복합객체- 객체지향에서 객체란 단순히 데이터와 함수만을 갖는 작은 단위뿐만 아니라 데이터 부분에 다른 객체를 갖을 수 있는데 이와 같은 관계를 복합화(Composition) 또는 복합관계라고 한다. - 복합화는 한 객체가 다른 객체를 포함하는 것으로 집단화(Aggregation)라고도 한다.- 한 객체가 다른 객체를 포함할 때 이 객체를 복합객체. 객체가 다른 객체를 포함할 경우포함하는 객체를 전체객체(Whole Object)포함되는 객체를 부분객체(Part Object) 예) 자동차와 자동차 내의 부품(엔진, 바퀴), 주문과 결제 간의 관계 자동차 객체는 부분객체인 엔진, 바퀴 등과 같은 부분객체들이 모여서 만들어진 객체이다.복합객체인 자동차는 부분객체들이 없으면 자동차로서의 제기능을 다..
메시지 메시지의 개념-객체와 다른 객체를 접근하기 위한 장치이다.-한 객체가 다른 객체에 서비스를 요청하기 위한 장치이다.-객체.함수명(매개변수) 형태로 구성된다. 메시지의 정의객체지향 프로그램은 객체들의 집합체이다.즉, 서로 상호작용하는 객체들로 구성된 시스템이라고 할 수 있다.따라서 단일 객체 그 자체만으로는 의미가 없으며 하나 이상의 객체들이 모여서 그들 간에 서로 상호 작용해야 객체지향 프로그램으로써 의미가 있게 된다. 객체지향 프로그래밍을 클래스 지향 프로그래밍이 아닌 객체지향 프로그래밍이라고 표현하는 데도 이 철학이 담겨있다.프로그램의 작동 주체는 클래스가 아닌 객체들이며, 이러한 객체들이 모여서 서로 정보를 주고 받으면서 프로그램이 작동되기 때문이다. 이처럼 객체들이 서로 상호작용하기 위해서 객체가..
캡슐화와 정보은닉 캡슐화클래스 혹은 객체라는 개념을 접할 때 가장 먼저 생각나게 하는 용어 가운데 바로 캡슐화 -캡슐화는 관련된 데이터와 함수를 묶는 장치이다. 관련된 데이터와 관련된 함수들을 클래스라는 하나의 캡슐 속으로 그룹화 혹은 묶어주는 장치 또는 매커니즘이다.따라서 캡슐화를 다른 말로 표현할 때 번들링(bundling)이라고도 한다.어떤 개념을 추상화시시켜 표현하는데 있어서 큰 도움이 된다.추상화가 잘되면 될수록 프로그램의 모듈화를 향상시키는 결과가 된다. 기존 절차지향 언어에서도 이러한 캡슐화를 위한 시도로 C언어에서는 구조체나 공용체를 통해 사용하기도 하였다.그러나 이 장치들은 관련된 데이터들을 묶어주는 장치에 불과했다.이로 인해 특정 함수와 관련된 데이터들을 추적한다는 것이 매우 어려웠다.이는 소프트웨어 유..
클래스와 객체 클래스의 개념과 특성 클래스는 명세 장치이다.- 여러 유사 객체들이 공통적으로 갖는 속성이나 행위를 기술하는 명세 장치로 볼 수 있다. 클래스의 특성1.클래스는 고유한 이름을 지닌다.- 특정 도메인에서 클래스가 중복될수 없기 때문에 클래스도 다른 클래스와 구별되기 위한 고유한 이름을 갖는다.- 특정 도메인에서 클래스를 추출하여 표현할 때는 이름이 중복되거나 이름이 다른데 의미가 동일한 클래스가 존재해서는 안된다. 예) 고객클래스와 회원클래스 의미가 동일하기때문에 둘 중 하나만 선택 2.클래스는 속성을 지닌다.- 클래스는 의미 있는 정보 저장소 역할을 하기 위해서 속성을 내포한다.- 속성을 상태변수, 멤버 변수, 멤버 데이터 등으로 표현예) 고객 클래스의 속성으로 '아이디', '비밀번호', '이름' 3. ..
소프트웨어 개발 패러다임과 객체지향 소프트웨어 개발 패러다임패러다임은 바라보는 시각, 뷰, 관점. 소프트웨어 개발 페러다임소프트웨어 개발에 대한 시각 소프트웨어 개발 패러다임의 변화로 소프트웨어의 개발 비용, 품질, 유지보수에 많은 변화를 가져왔고 지속적으로 변화를 가져온다. 구조적 방법론, 정보공학 방법론, 객체지향 방법론, 컴포넌트 기반 방법론, 서비스지향 방법론 절차지향 패러다임소프트웨어 개발에 있는 기능중심, 절차중심의 관점에서 개발하는 방식소프트웨어 공학에서는 이를 구조적 개발방식1970년~1980년 초반까지 소프트웨어 개발이 있어서 주류를 이루었던 패러다임소프트웨어 재사용이나 소프트웨어 유지보수에 있어서 많은 한계점 드러남기능 또는 함수 중심으로 소프트웨어를 개발하기 때문에 데이터들을 국지화(Localization)가 되어 있지..