본문 바로가기
객체 지향 프로그래밍

객체 지향 4가지 특징과 5가지 원칙

by xangmin 2022. 3. 21.
반응형

객체지향 이란?

객체지향 프로그래밍 (Object Oriented Programming, OOP)이란?

  - 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법

< 절차지향과 객체지향의 차이 >


객체지향 프로그래밍 장 · 단점
장점 단점
- 코드 재사용 용이
  상속을 통해 코드의 재사용을 높일 수 있다.
- 유지보수의 우수성
  캡슐화를 통해 유지보수가 쉽다.
- 대형 프로젝트 적합
  클래스 단위로 모듈화 개발로 업무 분담
개발속도가 느린 점
  객체가 처리하려는 것에 대한 정확한 이해가 필요
- 실행속도가 느린 점
  객체지향 언어가 대체적으로 실행속도가 느림
- 코딩 난이도 상승
  다중 상속과 같은 이유로 복잡도 상승

 

OOP4가지 특징

• 캡슐화
 - 데이터와 코드의 형태를 외부로부터 알 수 없게 하고, 데이터의 구조와 역할, 기능을 하나의 캡슐 형태로 만드는 방법
• 추상화 
 - 클래스들의 공통적인 특성(변수, 메소드)들을 묶어 표현하는 것
• 상속화
 - 부모 클래스에 정의된 변수 및 메서드를 자식 클래스에서 상속받아 사용하는 것
• 다형화
 - 다양한 형태로 표현이 가능한 구조를 말한다.


1.
캡슐화
캡슐화 란?

 데이터와 코드의 형태를 외부로부터 알 수 없게 하고, 데이터의 구조와 역할, 기능을 하나의 캡슐 형태로 만드는 방법 (정보 은닉)

캡슐화 방법
 1) 멤버 변수 앞에 접근 제어자 private를 붙인다. (private : 자기 클래스에서만 접근할 수 있는 것)
 2) 멤버 변수에 값을 넣고 꺼내 올 수 있는 메서드를 만든다. (접두어 set/get을 사용해 메서드를 만든다.)

- 접근 제어자 사용
 Example)


 -
set/get활용한 메서드
 Example)

 

2. 추상화
추상화 란?

 클래스들의 공통적인 특성(변수, 메소드)들을 묶어 표현하는 것

 

3. 상속화
상속화?

 부모 클래스에 정의된 변수 및 메서드를 자식 클래스에서 상속받아 사용하는 것

 - Example) extends 라는 키워드 이용


4.
다형화
다형화 란?
 메시지에 의해 객체가 연산을 수행하게 될 때, 하나의 메시지에 대해 각 객체가 가지고 있는 고유한 방법으로 응답할 수 있는 능력

다형 지원 방법

 - 오버로딩 (Overloading)

 - 오버라이딩 (Overriding)

오버로딩 (Overloading)

 - 하나의 클래스 안에서 같은 이름의 메서드를 여러 개 정의하는 것
 - Example)


오버라이딩 (Overriding)
 - 부모 클래스로부터 상속받은 메서드 내용을 변경하여 사용하는 것
 - 매개변수와 리턴 타입이 같아야 함
 - Example)




OOP5가지 원칙
단일 책임 원칙 (SRP : Single Responsibility Principle)
개방 폐쇄 원칙 (OCP : Open/Closed Principle)
리스코프 치환 원칙 (LSP : Liskov’s Substitution Principle)
인터페이스 분리 원칙 (ISP : Interface Segregation Principle)
의존관계 역전 원칙 (DIP : Dependency Inversion Principle)

단일 책임 원칙 (S)
 - 클래스는 하나의 책임만 가져야 한다.


개방 폐쇄 원칙 (O)
 - 확장에는 열려(Open) 있으나, 변경에는 닫혀(Closed)있어야 한다.


리스코프 치환 원칙 (L)
 - 프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다.


인터페이스 분리 원칙
(I)
 - 특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다.


의존관계 역전 원칙 (D)
 - 추상화에 의존한다. 구체화에 의존하면 안된다. 

 

반응형

댓글