객체지향프로그램이란?

Object Oriented Programming (OOP)

실제 세계의 많은 것들을 객체화해서 소프트웨어를 설계하는 프로그래밍 방법론.

절차지향프그래밍 (Procedural Programming)

  • 절차지향 프로그래밍 : 위에서 아래로 한 줄씩의 순차적인 처리를 기대하고 프로그램 전체를 유기적으로 설계하는 프로그래밍 방법론.
  • 컴퓨터의 처리방식과 유사해 속도가 빠르다.
  • 유지보수가 어렵다

OOP의 5가지 특징

  1. 추상화(abstraction)
    • 객체들의 공통적인 특징(기능, 속성)을 도출하는 것
    • 객체지향적 관점에서는 클래스를 정의하는 것을 추상화라고 할 수 있다.(클래스가 없는 객체지향 언어도 존재 ex.JavaScript)
    • ex) 사람은 이름이 있고, 음식을 먹는 행위를 한다. ->
      class Person() {
          String name;
          void earFood();
      }
  2. 캡슐화(encapsulation)
    • 객체의 필드(속성), 메소드를 하나로 묶어 실제 구현 내용을 외부에 감추는 것
    • 외부로부터 데이터를 보호하기 위해 외부에는 불필요하거나 내부적으로만 사용되는 부분을 감추기 위해  특정 속성이나 메소드를 사용자가 사용할 수 없도록 은닉화한 것
  3. 상속성(inheritance)
    • 하나의 클래스가 가진 특징(함수, 데이터)을 다른 클래스가 그대로 물려받는 것
    • 이미 작성된 클래스를 받아서 새로운 클래스를 생성하는 것
    • 기존 코드를 재활용해서 사용함으로써 객체지향 방법의 중요한 기능 중 하나에 속한다.
  4. 다형성(polymorphism)
    • 동일한 이름의 함수를 호출해도, 기능은 다를 수 있게 하는
    • 오버라이딩(Overriding), 오버로딩(Overloading)
      • 오버라이딩(Overriding)

        이름이 같나요? O, 매개변수가 같나요? O , 기능 재정의

      • 오버로딩(Overloading)

        이름이 같나요? O, 매개변수가 같나요? X

  5. 동적바인딩(Dynamic Binding)
    • 바인딩 (Binding)
      • 프로그램 구성 요소의 성격을 결정해주는 것
        ex) 변수의 데이터 타입이 무엇인지 정해지는 것
    • 정적 바인딩 vs 동적 바인딩
      • 정적 바인딩
        컴파일 시에 요소의 성격이 결정되는 것
      • 동적 바인딩
        런타임 시간에 요소의 성격이 결정되는 것

[참고자료]

http://www.incodom.kr/객체_지향

https://secretroute.tistory.com/entry/140819

http://wiki.hash.kr/index.php/캡슐화

좋은 웹페이지 즐겨찾기