본문 바로가기
old/개념

객체 지향 프로그래밍(OOP: Object Oriented Programming)

by 물 개 2020. 11. 10.

프로그램 개발 기법 중의 하나.

 

부품에 해당하는 객체들을 먼저 만들고, 객체들을 조립 및 연결해서 전체 프로그램을 완성하는 기법.

이때 사용되는 언어를 객체 지향 언어라고 한다.

 

객체 지향 프로그래밍의 목적은 클래스와 라이브러리를 잘 설계하여 코드 재사용성을 높이는 것이다.

 

▶ 특징

1. 캡슐화(Encapsulation) : 하나의 객체에 대해 그 객체가 특정한 목적을 위해 필요한 변수나 메소드를 하나로 묶는 것. 객체 세부 내용이 은폐된다.

1-1. 정보 은닉(Information Hiding) : 캡슐화에서 가장 중요한 개념으로, 다른 객체에게 자신의 정보를 숨기고 자신의 연산(getter, setter 메서드 등)만을 통하여 접근을 허용하는 것.

2. 추상화(Abstraction) : 불필요한 정보는 숨기고 중요한 정보만 표현함으로써 프로그램을 간단하게 만드는 것. 자료 추상화를 통해 정의된 자료형을 추상 자료형이라고 한다.

3. 상속성(Inheritance) : 부모 클래스(상위 객체)가 자신의 변수와 메서드들을 자식 클래스(하위객체)에게 물려주는 것. 자식 클래스는 부모 클래스의 모든 속성(변수)와 연산(메서드)을 자신의 클래스 내에서 다시 정의하지 않고도 즉시 사용할 수 있다.

3-2. 다중상속(Multiple inheritance) : 두 개 이상의 기반 클래스로부터 새로운 클래스를 상속하는 것. 자바는 단일 상속만 지원한다.

4. 다형성(Polymorphism) : 같은 동작이지만 다른 결과물을 낼 수 있다는 속성. 같은 타입이지만 실행 결과가 각각 다른 객체를 이용할 수 있는 성질. 코드 재사용성이 높아진다. 대표적인 자바의 다형성은 오버라이딩과 오버로딩이 있다.

5. 동적바인딩(Dynamic Binding)

 

limkydev.tistory.com/30?category=957527

 

▶ 장점

강한 응집력(Strong Cohesion)과 약한 결합력(Weak Coupling)을 가능하게 해준다.

1. 재사용 극대화

2. 생산성 향상

3. 자연적 모델링

4. 유지보수 용이 (캡슐화로 인해)

 

▶ 단점

개발 속도, 실행 속도가 느리다

1. 느린 개발 속도 (초기 설계에 많은 시간 소모)

2. 느린 실행 속도

3. 코딩 난이도 상승 (복잡성 증가)

 

▶ 객체지향 프로그래밍 설계 5대 원칙 : SOLID

-SRP (Single Responsibility Principle) 단일 책임 원칙
    : 모든 클래스는 하나의 책임만 가지며, 클래스는 그 책임을 완전히 캡슐화해야 함을 일컫는다.

    클래스가 제공하는 모든 기능은 이 책임과 주의 깊게 부합함.


-OCP (Open Closed Principle) 개방 폐쇄 원칙
    :  '소프트웨어 엔티티(클래스, 모듈, 함수 등)는 확장에 대해 열려 있어야 하고, 수정에 대해서는 닫혀 있어야 한다.'는 프로그래밍 원칙. ex)JDBC는 java에서 기본 제공하는 JDBC Driver Manager를 각각의 회사가 확장해서 구현했지만 타사가 타사의 JDBC Driver를 수정한다고 자사 driver까지 수정되지 않는다.


-LSP (Liskov Substitution Principle) 리스코프 치환 원칙

  "서브 타입은 언제나 자신의 기반 타입(base type)으로 교체할 수 있어야 한다." - 로버트 C. 마틴

   : 컴퓨터 프로그램에서 자료형 S가 자료형 T의 하위형이라면 필요한 프로그램의 속성(정확성, 수행하는 업무 등)의 변경 없이 자료형 T의 객체를 자료형 S의 객체로 교체(치환)할 수 있어야 한다는 원칙.-

 

-ISP (Interface Segregation Principle) 인터페이스 분리 원칙
   :
인터페이스 분리 원칙은 큰 덩어리의 인터페이스들을 구체적이고 작은 단위들로 분리시킴으로써 클라이언트들이 꼭 필요한 메서드들만 이용할 수 있게 해야 한다는 원칙


-DIP (Dependency Inversion Principle) 의존 역전 원칙
   : 
상위 모듈은 하위 모듈에 의존해서는 안된다는 원칙.

추상클래스 또는 상위클래스는 구체적인 구현클래스 또는 하위클래스에게 의존적이면 안된다. 왜냐면 구체적인 클래스는 코딩에 있어서 가장 전면적으로 노출되고 사용되기 때문에 변화에 민감하다. 자신보다 변하기 쉬운 것에 의존하지 마라.

 

solid 설명 자세히 나와 있는 블로그 : limkydev.tistory.com/77

 


 

출처

정의 : 이것이 자바다

특징, 장점, 단점, 설계 원칙 : blog.naver.com/pmw9440/221405837370

 

0.1 객체지향언어란?

0. 차례 1. 들어가기 2-0. 객체지향언어(Object-Oriented Programming, OOP)란? 2-1. 객체와 클래스...

blog.naver.com

특징 : velog.io/@jonah/%EA%B0%9D%EC%B2%B4%EC%A7%80%ED%96%A5-%EC%96%B8%EC%96%B4%EC%9D%98-%ED%8A%B9%EC%A7%95

 

객체지향 언어의 특징

캡슐화 데이터(속성)와 데이터를 처리하는 함수를 하나로 묶는 것 캡슈로하된 객체의 세부 내용이 외부에 은폐(정보 은닉)되어, 변경이 발생할 때 오류의 파급효과가 적다. 캡슐화된 객체들은

velog.io

 

'old > 개념' 카테고리의 다른 글

버퍼(Buffer)  (0) 2020.11.16
노드(Node)  (0) 2020.11.14
컴퓨터 프로그래밍과 알고리즘  (0) 2020.11.14
객체 참조 변수와 객체 인스턴스  (0) 2020.11.10
바인딩, 동적바인딩, 정적바인딩  (0) 2020.11.10

최근댓글

최근글

skin by © 2024 ttuttak