Imperative and Procedural Programming

절차 지향적 프로그래밍

정의된 순서대로 절차적으로 함수가 하나씩 호출된다.

  • 단점
    • 여러개의 얽힌 함수와 data가 있으므로 일부 수정을 위해서도 전체를 이해해야만 함
    • 하나를 수정했을 때 side effect 발생 확률 ↑
    • 이해 난이도 ↑
      • 유지 보수 ↓
      • 확장성 ↓

Object Oriented Progamming

객체 지향적 프로그래밍

객체를 정의하고 객체들끼리 의사소통하도록 한다.
서로 관련있는 data와 함수를 여러가지 객체로 나누어 정의한다.
error, exception, event 등 도 object로 정리 가능, 이름은 명사형일 것!

  • 장점
    • 수정 필요 시, 해당 object만 이해하고 수정하면 됨
    • 여러번 반복되는 경우 관련 object를 재사용
    • 새로운 기능 ? → 새로운 객체 ! : 확장성 ↑

Class / Object

Class

  • template
  • declare once
  • no data in

Object ( = instance )

  • instance of a class
  • created many times
  • data in

OOP 4 Principles

Encapsulation ( 캡슐화 )

서로 관련있는 데이터와 함수를 캡슐 안에 모아두고 외부에서 보일 필요없는 (보안이 필요한) 데이터를 잘 숨길 수 있다.

  • happy, hungry, tired, full등 은 외부에서 직접적으로 변경이 불가한 object 내부 state
  • feed( ), play( )등의 외부 function을 통해 간접적으로 변경가능하도록 작성한다.

Abstraction ( 추상화 )

스크린샷 2023-08-18 오후 5.06.14.png

외부에서 ‘내부의 구현방법, 복잡성 등’ 모두를 알지 않아도 신경쓰지 않고 외부에서 간단히 지정된 Interface를 통해 사용 가능하다.

Inheritance ( 상속 )


자식 class는 부모 class 로 부터 그 안의 요소들을 상속 받는다.

animal class 에 makesound( ) 함수가 선언되어 있다. animal class의 자식 요소인 dog, cat, pig는 makesound( )를 상속 받아 새로 선언하지 않아도 사용할 수 있다.

Polymorphism ( 다형성 )

부모 class에 정의된 함수를 모든 자식 class가 가져와 쓸 수 있다.

class?

서로 관련 있는 data, 기능 모으기, template( 청사진 ) 만들기

constructor( ) : 오브젝트 / instance를 만들 때 항상 호출되는 함수

  • 멤버 변수: 클래스가 한번 정의되고 클래스 사이에서 공유 될 수 있는 data
    → 계속 다시 호출 및 저장하므로 메모리가 낭비될 가능성 ↑
    - static 키워드를 통해 class level 로 지정 : object 마다 생성되지 않음
    - 부를 때는 this. 대신 class명
    - 그 외 멤버 변수: instance( object ) level

  • 클래스 정보 은닉화

    • public : 기본 !
    • private : 외부 조회 / 접근 불가 data
    • protected: 외부에서는 접근 / 조회가 불가하나 이 class를 상속한 자식 class에서는 접근 가능
    • setter / getter : 일반 멤버 변수처럼 사용이 가능하지만 어떤 계산이 필요할 때 사용

0개의 댓글

Powered by GraphCDN, the GraphQL CDN