OO   Object-Oriented   객체 지향

(2021-01-18)

1. 객체 지향 (Object Oriented)

  ㅇ `논리데이터가 분리되어 있는 사상`에서 과감히 탈피하여,
     - `논리데이터가 결합된 객체들이 시스템을 이룬다는 견해`를 갖고,
     - 실세계의 문제를 분석하고, 이를통해 소프트웨어 체계를 잡는 철학/패러다임


2. 출현 배경

  ㅇ 기존 프로그래밍시, 프로그래머는 데이터프로시져(논리)를 별개로 선언하고 사용하게됨
     - 작은 프로그램일 경우에, 어떤 프로시져가 어떤 데이터 유형을 사용하는지 쉽게 알 수 있으나,
     - 프로그램 규모가 커지면, 둘 간의 관련성에 혼돈이 오기 쉬움

  ㅇ 이에따라, 데이터프로시져를 분리하지 않고 함께 생각하고 작성할 수 있다면 ,
     - 프로그램 작성자는 오류나 중복, 수정, 변경이 용이하게 됨
  
  ㅇ 즉, 논리데이터를 결합시켜, 함께 생각하려는 생각의 출발점이, 객체지향 출현의 배경

  ㅇ 용어 유래
     - 1960년대 노르웨이의 K. Nygaard가 Simula 67 프로그래밍 언어를 개발하면서,
     - 객체(object)라는 개념을 사용한 데서 유래


3. 적용 분야 객체지향 프로그래밍객체지향 분석, 객체지향 설계객체지향 사용자 인터페이스객체지향 데이타베이스객체지향 운영체제4. 객체지향의 장점
 
  ㅇ 수정 혹은 보완이 필요 할 때 기존에 만들어 놓은 객체들을 재사용(Reusability) 가능

  ㅇ 사물,현상에 대해, 추상적/범용적(例,운송 수단), 구체적/한정적(例,특정 자동차)으로 다룰 수 있음

  ㅇ 클래스를 통해 계층적으로 분류할 수 있는 수단을 제공 (슈퍼 클래스,서브 클래스 등) 

  ㅇ 또한, 유지보수(Maintenance)성, 확장성(Scalability), 개발의 신속성, 실세계 접근,
           프로젝트(프로그램)의 대형화 등에서 유리


5. 객체지향의 주요 특징들추상화 (Abstraction)
     - 복잡한 실행 절차나 데이터를 하나로 묶어 단순화시키는 것

  ㅇ 캡슐화 (Encapsulation)
     - 복잡함을 감추고, 상호 영향을 작게하는 것

  ㅇ 상속성 (Inheritance)
     - 코드의 재사용 및 효과적인 확장 능력

  ㅇ 다형태성 (Polymorphism)
     - 문맥에 따라 다른 형태나 동작을 할 수 있는 능력

  ㅇ 동적 바인딩 (Dynamic Binding)
     - 실행 중간에도 연결된 속성 변경이 가능


6. 객체지향 설계의 5가지 기본 원칙 (SOLID)

  ㅇ SRP (Single Responsibility Prnciple)  : 단일 책임 원칙
     - 하나의 클래스,속성,메서드,패키지,모듈,컴포넌트,프레임워크 등에 단일 책임 만 관련시킴
  ㅇ OCP (Open Closed Principle)           : 개방 폐쇄 원칙
  ㅇ LSP (Liskov Substitution Principle)   : 리스코프 치환 원칙
  ㅇ ISP (Interface Segregation Principle) : 인터페이스 분리 원칙
  ㅇ DIP (Dependency Inversion Principle)  : 의존 역전 원칙

객체지향 프로그래밍
   1. 객체지향   2. 객체지향 프로그래밍   3. 메세지   4. 생성자   5. 접근 제한 수식자   6. 추상 클래스   7. 인터페이스  


Copyrightⓒ written by 차재복 (Cha Jae Bok)               기술용어해설 후원
"본 웹사이트 내 모든 저작물은 원출처를 밝히는 한 자유롭게 사용(상업화포함) 가능합니다"