[소프트웨어공학]객체지향 개념 정리(1/2)

류명운

·

2015. 4. 16. 22:32

반응형

객체

->클래스의 인스턴스, ex)류명운은 인간 클래스(범주)의 인스턴스이다.

->하나의 객체는 속성과 행동(자신이 수행하는 오퍼레이션으로 구성)을 갖고 있다. 

->속성과 오퍼레이션을 모두 합쳐서 특성(feature) 이라고 한다.


표기법

 1.클래스 이름은 대문자로 시작한다.

 2.두 단어 이상으로 된 클래스 이름은 각 단어의 처음을 대문자로 시작하며 함께 붙여쓴다.

 3.속성이나 오퍼레이션은 소문자로 시작한다.

 4.두 단어 이상으로 이루어진 속성이나 오퍼레이션은 제일 앞 단어만 제외하고 각 단어의 처음을 대문자로 시작한다.

 5.오퍼레이션의 이름 뒤에는 괄호를 붙인다.


클래스의 역할

->어떤 범주를 나눈다.

->객체를 생성하는 틀, 혹은 템플릿(template)이기도 하다. ex)새로운 객체를 찍어내는 붕어빵 기계로 생각.


모델링

->실세계의 일부 혹은 전체를 본뜬 것(객체지향의 목적)


객체의 성질(추상화, 상속, 다형성, 캡슐화 / 메시지 전송, 연관, 집합연관)


추상화(Abstraction)

->객체를 모델링할 때 "필요로 하는 만큼의" 속성오퍼레이션을 추출하는 것

->모델에 무엇을 포함하고, 무엇을 뺄 것인지 아는 것


상속(Inheritance)

->하나의 객체는 자신의 클래스에 속해 있는 속성과 오퍼레이션을 모두 물려받는다.

->슈퍼클래스(부), 서브클래스(자)로 나뉜다.

->ex) (Super)가전제품클래스는 전원 스위치, 전기 배선의 attribute와 켜다, 끄다의 operation을 갖고있다. (Sub)세탁기클래스는 가전제품클래스의 특성을 상속받아 사용하고 자신만의 속성과 행동만을 추가하면 된다.


다형성(Polymorphism)

->다른 클래스인데 같은 이름의 오퍼레이션을 가지게 되는 경우가 있지만, 각각의 클래스마다 자신의 오퍼레이션이 어떻게 행동하는지를 알고 있는 것을 뜻한다.

->쉽게 말해, 동일한 이름을 가진 오퍼레이션이라도 클래스마다 각기 다른 행동을 수행한다는 것이다.

 ex) 같은 "open"인데도 문을 열고(open door), 창문을 열고(open window) 등.


캡슐화(Encapsulation)

->객체는 자신의 동작 원리를 클래스라는 껍데기로 캡슐화한다. (TV는 자신을 들여다보고 있는 사람들에게 내부 동작은 보여주지 않는다)

->객체만이 자신의 오퍼레이션이 어떻게 작동하는지를 알고 있으며, 외부에서는 알 수 없다.

->정보 은닉(information hiding)이라고도 부른다.

->객체는 자신의 오퍼레이션을 다른 객체들(또는 사람)이 사용할 수 있도록 인터페이스를 제공한다.

 ex)TV의 버튼과 핸드폰의 키패트는 인터페이스(interface)라고 불린다.


메시지 전송(Message Sending)

->시스템 안에서 객체들이 서로 연결되어 행동하기 위한 수단

->한 객체에서 다른 객체로 메시지 전송

->메시지는 "오퍼레이션을 수행하라"는 지시와 같다.


연관(Association)

->객체는 다른 객체와 연관 관계를 가질 수 있다. 연관은 여러 가지 형태로 이루어지며, 하나의 객체는 다중성에 의해 한 개 이상의 객체와 연관될 수 있다.

->단방향성 연관: 사용자가 TV를 "켜다"["켜다"연관 을 가짐]

 ex)일 대 일(one-to-one) 연관 관계: 수업과 강사

 ex)일 대 2(one-to-two) 연관 관계 : 자전거와 바퀴

 ex)일 대 다(one-to many) 연관 관계 : 학교와 교사

->하나의 클래스는 한개 이상의 다른 클래스와 연관될 수 있다(사람은 자동차에 탈 수 있을 뿐만아니라, 버스에도 탈 수 있다.)

집합연관(Aggregation)

->하나의 객체가 다른 객체들의 조합에 의하여 만들어진 것(ex:컴퓨터 시스템-키보드,마우스,모니터,하드,프린터 등)

->복합연관(composition) : 집합체 전체와 그 객체를 구성하는 컴포넌트 부분끼리 밀접한 관계를 가지는 집합연관의 한 형태

 ex) 복합체[셔츠]-컴포넌트[몸통,칼라,소매,단추,단추구멍] (복합체가 없어지면 컴포넌트도 따라 없어진다)


* 모든 시스템의 중심은 객체와 객체들간의 연관 관계라고 할 수 있다.


퀴즈

1. 객체란 무엇일까?

->하나의 구조이다. 속성(attribute)와 오퍼레이션(operation)을 가진 특성으로 표현되며 인터페이스(interface)를 제공한다.


2. 객체들은 어떤 방법을 사용하여 함께 수행될까?

->메시지를 통하여


3. 다중성(multiplicity)은 어떤 것을 명시하고 있을까? 

->하나의 객체는 한 개 이상의 객체와 연관될 수 있다.


4. 두 개의 객체는 한 개 이상의 연관 관계를 가질 수 있을까?

->당연하다 (many-to many)


5. 상속이란 무엇인가? 

->superclass에 subclass가 있는 것 / 하나의 객체는 자신의 클래스에 속해 있는 속성과 오퍼레이션을 상속 받는다.


6. 캡슐화란 무엇인가?

->객체가 자신의 동작 원리를 클래스라는 껍데기로 숨키는 것 / 자신의 오퍼레이션이 어떻게 작동하는지 자기 자신만 알고 있음. 외부에서는 알 수 없음 / 정보은닉 

반응형