OO   Object-Oriented   객체지향

(2018-03-02)
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. 접근 제한 수식자 8. 추상 클래스 9. 인터페이스
[객체,클래스,인스턴스] [객체지향 원리/특징] [객체지향 모델링]
  1.   기술공통
  2.   기초과학
  3.   진동/파동
  4.   방송/멀티미디어/정보이론
  5.   전기전자공학
  6.   통신/네트워킹
  7.   정보기술(IT)
        1. 정보기술
    1.   전산기초
    2.   컴퓨터구조
    3.   프로그래밍
          1. 프로그램,프로그래밍
      1.   프로그래밍 언어론
      2.   구조적 프로그래밍
      3.   객체지향 프로그래밍
            1. 객체지향
            2. 객체지향 프로그래밍
            3. 메세지
            4. 생성자
            5. 오버라이딩
            6. 오버로딩
            7. 접근 제한 수식자
            8. 추상 클래스
            9. 인터페이스
        1.   객체,클래스,인스턴스
        2.   객체지향 원리/특징
        3.   객체지향 모델링
      4.   자료구조
      5.   알고리즘
      6.   자료표현(알파벳/코드)
      7.   시스템 소프트웨어
      8.   프로그래밍언어 종류
      9.   프로그래밍 기타일반
    4.   데이터베이스
    5.   소프트웨어 공학
    6.   운영체제
    7.   정보보호/보안
    8.   IT 기타기술
  8.   공업일반(기계,재료등)
  9.   표준/계측/품질
  10.   기술경영

 
        최근수정     요약목록(시험중)     참고문헌