1. 객체지향 프로그래밍이란?
객체지향 프로그래밍 (OOP: Object-Oriented Programming) 은 컴퓨터 프로그래밍 패러다임의 한 종류 이며, 객체(Object)와 객체(Object)간의 메시지 전달을 통해 프로그래밍을 구현하는 방식이다. 특징으로는 객체지향으로 짜인 프로그램은 유연하고 변경이 쉽고 강한 응집력(Strong Cohesion)과 약한 결합력(Weak Coupling)을 지향한다. 1
2. 요소
객체(Object) |
클래스의 인스턴스 | 개체(Entity) | 현실 세계의 본질 |
속성(Attribute) | 자료 저장소 (cf.변수) | ||
메소드(Method) | 호출 단위 (cf.함수) | ||
클래스(Class) | 객체를 생성하는 추상 메소드 타입 | ||
메시지(Message) | 객체 간의 통신 |
3. 특징
자료 추상화
불필요한 정보는 숨기고 중요 정보만 표현하며 프로그램을 간단히 만드는 것.
상속
기존 클래스의 자료와 연산을 새로운 클래스에서 사용할 수 있게 하는 기능.
일반적으로 상속 받는 클래스를 자식 클래스(하위 클래스)라고 하며, 상속하는 클래스를 부모 클래스(상위 클래스) 라고 한다. 클래스 간의 종속 관계를 형성하여 객체를 조직화 하는 역할을 한다.
다중 상속
하나의 클래스가 2개 이상의 클래스로 부터 상속받을 수 있게 하는 기능.
동적 바인딩
런타임 중 변경 될 수 있는 바인딩을 말한다.
4. SOLID
로버트 마틴이 명명한 객체 지향 프로그래밍의 다섯 가지 기본 원칙의 앞글자를 딴 것을 말한다.
유지보수와 확장이 쉬운 프로그램을 개발하기 위한 원칙이다.
SRP 단일 책임 원칙(Single Responsibility Principle)
"한 클래스는 하나의 책임만 가져야 한다."
OCP 개방 폐쇄 원칙 (Open Closed Principle)
"소프트웨어 요소는 확장에는 열려있어야하나, 변경에는 닫혀있어야 한다."
LSP 리스코프 치환 원칙 (Liskov Substitution Principle)
"프로그램의 객체는 프로그램의 정확성을 깨트리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다."
ISP 인터페이스 분리 원칙 (Interface Segregation Principle)
"특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다."
DIP 의존관계 역전 원칙 (Dependency Inversion Principle)
"프로그래머는 추상화에 의존해야지 구체화에 의존하면 안된다."
참조문헌
NCS 정보처리기술사 연구회,「수제비 정보처리기사 실기vol.1」,건기원,2021
위키백과 '객체 지향 프로그래밍' https://ko.wikipedia.org/wiki/%EA%B0%9D%EC%B2%B4_%EC%A7%80%ED%96%A5_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D
객체 지향 프로그래밍 - 위키백과, 우리 모두의 백과사전
ko.wikipedia.org
위키백과 'SOLID (객체 지향 설계)' https://ko.wikipedia.org/wiki/SOLID_(%EA%B0%9D%EC%B2%B4_%EC%A7%80%ED%96%A5_%EC%84%A4%EA%B3%84)
SOLID (객체 지향 설계) - 위키백과, 우리 모두의 백과사전
ko.wikipedia.org