It won't hurt to try

[C++/윈도우프로그래밍응용]8. 객체지향의 소개 본문

C++/윈도우프로그래밍응용

[C++/윈도우프로그래밍응용]8. 객체지향의 소개

yongki.doki 2021. 9. 23. 16:29

객체지향 프로그래밍(OOP)

소프트웨어를 객체로 구성하는 프로그래밍 개념이자 방법론

  • 실제 세계가 객체(Object)들로 구성된 것과 마찬가지
  • OOP = Object-Oriented-Programming

1. 객체지향의 소개

객체지향 프로그래밍의 방법

객체가 가지고 있는 상태와 동작을 먼저 구현

  • 모든 객체는 상태(state)동작(behavior)으로 구성되어 있다고 가정

이후, 객체 간의 상호작용을 구현

  • 객체를 생성하고, 객체간의 상호작용을 구현하여 원하는 작업을 수행하도록 구성

2. 객체의 구성

자동차의 예시)

자동차의 상태(state)

  • 색상
  • 속도
  • 기어

자동차의 동작(behavior)

  • 출발하기
  • 가속하기
  • 감속하기

3. 객체지향의 개념

객체지향의 주요개념

1. 캡슐화(encapsulation)

 - 데이터와 알고리즘을 하나의 묶음으로 정리한것

  • 객체(Object) = 하나의 묶음이자 캡슐(capsule)
  • 데이터 = 멤버 변수(member variable)
  • 알고리즘 = 멤버 함수(member function)

 - 데이터와 알고리즘을 통합하여 재사용성 및 편리성 증대

 - 객체의 실제 구현 내용을 외부에 감추는 목적

 

2. 정보은닉(information-hiding)

 - 정보은닉의 종류

    ①객체의 구체적인 타입 은닉

       특정 자료형, 함수, 구현 등에 의존하는 것을 막아

       객체간의 결합도를 약화시켜 기능 교체/변경이 쉽도록 함

       예) print라는 함수가 있다고 하자. print함수의 인자가 string만 가능하다면 사용자는 print를 사용하기 위해서 숫자의 변수의 값을 문자열로 변경시켜야한다. 하지만 이렇게 되면 특정 함수에 대해 의존성이 높아지게 된다.

    ②객체의 데이터와 알고리즘 은닉

       캡슐화를 통하여 달성 가능

    ③객체의 구현 은닉

       구체적인 구현이 보이지 않더라도, 인터페이스만으로 연동 코드를 생성 가능

 

3. 상속(inheritance)

부모 클래스를 이어받아 자식 클래스를 생성하는 기법

  • 부모클래스(parent, base, super class)
    • 이미 작성된 클래스
  • 자식클래스(child, derived, sub class)
    • 부모 클래스를 이어받아 작성된 새로운 클래스

기존의 코드에 대한 재사용성을 증대 

 

4. 다형성(polymorphism)

객체가 취하는 동작이 상황에 따라 달라지는 것

  • 서로 다른 자료형에 대해서 서로 다른 작업 수행
  • 예) 함수 중복 (overloading)

객체의 동작 방식이 실행 시간(run-time)에 따라 결정

  • 자료형에 따라 객체의 동작이 실행 중에 정의됨
  • 실행 시간의 반댓말 <-> 컴파일 시간(compile-time)
  • 오버로딩된 함수를 컴파일하고, 실행할때 시간을 결정됨(찾는데 오래걸릴 수 있음
300x250
300x250
Comments