ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 객체 지향 프로그래밍?
    Today I Learned 2020. 10. 4. 23:28

    1. 객체

    : 속성과 행동으로 이루어진 모든 것

     - 자동차 : 브랜드, 색깔, 가격 등의 속성, 시동이 걸리는 것, 전/후진하는 것 등의 행동을 가진 객체라 할 수 있음

     - SNS 유저 객체 : 이메일 주소, 비밀번호, 친구 목록 등의 속성, 좋아요 누르기, 친구 추가하기 등의 행동을 가진 객체라 할 수 있음

     

    2. 객체 지향 프로그래밍

    : 프로그램을 여러 개의 독립된 객체들과 그 객체들 간의 상호작용으로 파악하는 프로그래밍 접근법

     - 프로그램을 객체들과 객체들 간의 소통으로 바라보는 것

     

    3. 객체 지향 프로그래밍의 4가지 특징

    • 캡슐화(encapsulation) : 변수와 함수를 하나의 함수로 묶는 것을 말한다. 사용자에게는 사용법만 알려주고 내부가 어떻게 되있는지는 숨길 수 있다. 이런 컨셉을 정보의 은닉화 또는 캡슐화라고 부른다
    • 상속(inheritance) : 자식(sub) 클래스가 부모(super) 클래스의 기능을 받아서 쓰는 것. 어떤 객체의 필드(변수)와 메소드를 다른 객체가 물려받을 수 있는 기능을 말한다
    • 추상화(abstraction) : 공통의 속성이나 기능을 묶어 이름을 붙이는 것으로, 불필요한 정보는 생략하고 객체의 속성 중 중요한 것에만 중점을 두어 간단한 구조, 즉 클래스를 만드는 일련의 과정을 말한다
    • 다형성(polymorphism) : 부모 클래스로부터 상속을 받아 똑같은 기능이지만 다른 내용을 추가함으로써 차별점을 둘 수 있는 특성

    4. 장점

    • 코드의 복잡도를 줄여준다, 코드의 재활용성을 높여준다
    • 유지보수가 쉬움
    • 대형 프로젝트에 적합
    • 디버깅이 쉽다

    5. 단점

    • 설계에 많은 시간 소요
    • 처리속도가 절차 지향 프로그래밍에 비해 느리다
    • 객체가 많아지면 프로그램의 용량이 커질 수 있다

    6. 객체 지향 프로그래밍을 하려면

      1) 프로그램에 어떤 객체들이 필요할지 정한다

      2) 객체들의 속성과 행동을 정한다

      3) 객체들이 서로 어떻게 소통할지 정한다

     

    7. 총 게임의 예시

      1) 프로그램에 어떤 객체들이 필요할지 정한다

    • 게임 캐릭터
    • 총알

      2) 객체들의 속성과 행동을 정한다

    • 게임 캐릭터 - 속성: ID, 체력, 사용 중인 총 / 행동 : 총쏘기, 달리기, 체력이 0 이하가 되면 죽는다
    • 총 - 속성 : 모델명, 무게, 장전된 총알 개수 / 행동 : 총알 발사
    • 총알 - 속성 : 공격력 / 행동 : 총알을 맞은 캐릭터의 체력을 공격력만큼 깎는다

      3) 객체들이 서로 어떻게 소통할지 정한다

    • 게임 캐릭터 객체가 총 객체에게 발사하라고 신호를 보낸다
    • 총 객체는 장전된 총알 중 하나를 발사한다
    • 자신의 속성 중 장전된 총알 개수에서 1을 뺀다
    • 총알이 발사된다
    • 총알이 다른 캐릭터에게 닿으면, 체력을 깎도록 신호를 보내야 한다.
    • 캐릭터 객체는 닿은 총알의 공격력만큼 체력을 깎는다
    • 만약 체력이 0 이하라면 죽는다

    [ 참고자료 ]

    코드잇 - "객체지향 프로그래밍이란?"

    해시넷 - 객체 지향 프로그래밍

    댓글

Designed by Tistory.