-
객체 지향(Object-Oriented)컴퓨터 사이언스 2021. 10. 30. 21:49
객체지향에 관련된 서적을 읽다가 문득 든 생각
과연 나는 체계적인 로직을 세우고 설계원칙을 중요하게 생각했는가?
솔직하게 고백하자면 그러지 못했던것 같다.
단순히 기능이 정상적으로 동작하는가에 초점을 맞추고 개발을 해왔던것 같다.
이 기회에 반성하며 객체지향에 관한 개념을 다시 정리하려고 한다.
객체 지향의 개요?
현실 세계의 개체를 기계의 부품처럼 하나의 객체로 만들어, 기계적인 부품들을 조립하여 제품을 만들 듯이 소프트웨어를 개발할 때에도 객체들을 조립해서 작성할 수 있는 기법!
덕분에 복잡한 구조를 단계적, 계층적으로 표현 하고 인간친화적인 방식으로서 이해하기 쉽다.
또한 재사용 및 확장이 용이하여 빠른 개발과 유지보수가 쉽다는 이점이 있다.
많이들 붕어빵 틀을 예제로 사용하시는데, 생각해보면 붕어빵을 만들때 마다 매번 붕어빵 틀을 새로 제작하는 것은 전혀 실용적이지 못하다.
팥 붕어빵을 먹든, 슈크림을 먹든 동일한 틀에 붕어빵을 만들 수 있다.
객체 지향의 구성 요소
객체란?
데이터와 데이터를 처리하는 함수를 묶어놓은(캡슐화한) 하나의 소프트웨어 모듈이다.
여기서 데이터라 함은, 객체가 가지고 있는 정보로 속성이나 상태, 분류 등을 나타낸다.
데이터를 처리하는 함수란 객체가 수행하는 기능으로 객체가 갖는 데이터를 처리하는 알고리즘이다.
객체의 상태를 참조하거나 변경하는 수단이 되는 것으로 메소드(행위), 서비스 , 동작, 연산이라고도 한다.
간단하게 생각하여, 해리포터를 객체로 여기고 바라본다면 이마 : 번개모양 흉터, 얼굴 : 안경착용, 머리 색 : 갈색 등은 데이터의 범주에 들어가고, 봄바르다!, 익스펙토 패트로눔! 같이 마법을 사용하는것은 데이터를 처리하는 함수, 즉 메소드(행위) 라고 볼 수 있다.
객체의 특성
- 객체는 독립적으로 식별 가능한 이름을 가지고 있다. ( ex. 자동차 번호판)
- 객체가 가질 수 있는 조건을 상태라고 하는데, 일반적으로 상태는 시간에 따라 변한다.
- 객체와 객체는 상호 연관성에 의한 관계가 형성된다. (ex. 리그오브 레전드 바론한타)
- 객체가 반응할 수 있는 메시지의 집합을 행위라고 하며,객체는 행위의 특징을 나타낼 수 있다.(ex. 카직스 궁은 은신이지만 미포 궁은 총알 난사다.)
-객체는 일정한 기억장소를 가지고 있다.
클래스
공통된 속성과 연산(행위) 을 갖는 객체의 집합으로, 객체의 일반적인 타입을 의미.
간단하게 설명하자면 객체를 정의 해놓은것이며 객체를 생성하는데 사용된다.
-객체지향 프로그램에서 데이터를 추상화 하는 단위
-클래스에 속한 각각의 객체를 인스턴스라고 하며, 클래스로부터 새로운 객체를 생성하는 것을 인스턴스화 라고 한다.
캡슐화
데이터(속성)와 데이터를 처리하는 함수를 하나로 묶는 것을 의미한다.
-재사용성이 용이하다.
-캡슐화된 객체는 인터페이스를 제외한 세부 내용이 은폐(정보 은닉)되어 외부에서의 접근이 제한적이기 때문에 외부 모듈의 변경으로 인한 파급 효과가 적다.
-인터페이스가 단순해지고, 객체 간의 결합도가 낮아진다.
상속
이미 정의된 상위 클래스의 모든 속성과 연산을 하위 클래스가 물려 받는것
-하위 클래스는 상위클래스로 부터 상속받는 속성과 연산 외에 새로운 속성과 연산을 첨가하여 사용 할 수 있다.
-재사용성을 높이는 중요한 개념이다.
-다중 상속: 한 개의 클래스가 두 개 이상의 상위 클래스로부터 속성과 연산을 상속 받는 것이다.
다형성
하나의 메시지에 대해 여러가지 형태의 응답이 있다는 것을 의미한다.
메세지에 의해 객체(클래스)가 연산을 수행하게 될 때 하나의 메시지에 대해 각각의 객체(클래스)가 가지고 있는 고유한 방법(특성)으로 응답 할 수 있는 능력.
객체 지향 언어에서 다형성이란 하나의 클래스나 메서드가 다양한 방식으로 동작이 가능 한 것을 의미.
-객체들을 동일한 메소드명을 사용하며 같은 의미의 응답을 한다.
- 오버로딩과 오버라이딩이 존재한다.
연관성
두 개 이상의 객체(클래스)들이 상호 참조하는 관계를 말한다.
종류 의미 특징 is member of 연관화(Association) 2개 이상의 객체가 상호 관련되어 있음을 의미. is instance of 분류화(Classfication) 동일한 형의 특성을 갖는 객체들을 모아 구성하는 것 is part of 집단화(Aggregation) 관련 있는 객체들을 묶어 하나의 상위 객체를 구성하는것 is a 일반화(Generalization) 공통적인 성질들로 추상화한 상위 객체를 구성하는 것 is a 특수화/상세화(Specialization) 상위 객체를 구체화하여 하위 객체를 구성하는 것 728x90반응형'컴퓨터 사이언스' 카테고리의 다른 글
객체지향 분석 및 설계 (0) 2021.10.30