객체지향 이란?
• 객체지향 프로그래밍 (Object Oriented Programming, OOP)이란?
- 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법
• 객체지향 프로그래밍 장 · 단점
장점 | 단점 |
- 코드 재사용 용이
상속을 통해 코드의 재사용을 높일 수 있다.- 유지보수의 우수성
캡슐화를 통해 유지보수가 쉽다.- 대형 프로젝트 적합
클래스 단위로 모듈화 개발로 업무 분담 |
- 개발속도가 느린 점
객체가 처리하려는 것에 대한 정확한 이해가 필요- 실행속도가 느린 점
객체지향 언어가 대체적으로 실행속도가 느림- 코딩 난이도 상승
다중 상속과 같은 이유로 복잡도 상승 |
OOP의 4가지 특징
• 캡슐화
- 데이터와 코드의 형태를 외부로부터 알 수 없게 하고, 데이터의 구조와 역할, 기능을 하나의 캡슐 형태로 만드는 방법
• 추상화
- 클래스들의 공통적인 특성(변수, 메소드)들을 묶어 표현하는 것
• 상속화
- 부모 클래스에 정의된 변수 및 메서드를 자식 클래스에서 상속받아 사용하는 것
• 다형화
- 다양한 형태로 표현이 가능한 구조를 말한다.
1. 캡슐화
• 캡슐화 란?
데이터와 코드의 형태를 외부로부터 알 수 없게 하고, 데이터의 구조와 역할, 기능을 하나의 캡슐 형태로 만드는 방법 (정보 은닉)
• 캡슐화 방법
1) 멤버 변수 앞에 접근 제어자 private를 붙인다. (private : 자기 클래스에서만 접근할 수 있는 것)
2) 멤버 변수에 값을 넣고 꺼내 올 수 있는 메서드를 만든다. (접두어 set/get을 사용해 메서드를 만든다.)
- 접근 제어자 사용
Example)
- set/get을 활용한 메서드
Example)
2. 추상화
• 추상화 란?
클래스들의 공통적인 특성(변수, 메소드)들을 묶어 표현하는 것
3. 상속화
• 상속화 란?
부모 클래스에 정의된 변수 및 메서드를 자식 클래스에서 상속받아 사용하는 것
- Example) extends 라는 키워드 이용
4. 다형화
• 다형화 란?
메시지에 의해 객체가 연산을 수행하게 될 때, 하나의 메시지에 대해 각 객체가 가지고 있는 고유한 방법으로 응답할 수 있는 능력
• 다형화 지원 방법
- 오버로딩 (Overloading)
- 오버라이딩 (Overriding)
• 오버로딩 (Overloading)
- 하나의 클래스 안에서 같은 이름의 메서드를 여러 개 정의하는 것
- Example)
• 오버라이딩 (Overriding)
- 부모 클래스로부터 상속받은 메서드 내용을 변경하여 사용하는 것
- 매개변수와 리턴 타입이 같아야 함
- Example)
OOP의 5가지 원칙
• 개방 폐쇄 원칙 (OCP : Open/Closed Principle)
• 리스코프 치환 원칙 (LSP : Liskov’s Substitution Principle)
• 인터페이스 분리 원칙 (ISP : Interface Segregation Principle)
• 의존관계 역전 원칙 (DIP : Dependency Inversion Principle)
단일 책임 원칙 (S)
- 한 클래스는 하나의 책임만 가져야 한다.
개방 폐쇄 원칙 (O)
- 확장에는 열려(Open) 있으나, 변경에는 닫혀(Closed)있어야 한다.
리스코프 치환 원칙 (L)
- 프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다.
인터페이스 분리 원칙 (I)
- 특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다.
의존관계 역전 원칙 (D)
- 추상화에 의존한다. 구체화에 의존하면 안된다.
'객체 지향 프로그래밍' 카테고리의 다른 글
JSON (JavaScript Object Notation)이란? (0) | 2022.04.14 |
---|---|
리팩토링(Refactoring) 과 코드스멜 (Code Smell) (0) | 2022.04.07 |
댓글