Codestates SEB FE 42기/정리노트

S2 unit2 | 객체 지향 프로그래밍 (Object Oriented Programming)

2realzoo 2022. 11. 20. 12:57

📌 절차적 프로그래밍 (Producedural Programming)

순차적인 처리를 중요시 여기며, 프로그램 전체가 유기적으로 연결되게끔 하는 프로그래밍 기법

 

장점

  • 모듈 구성이 용이, 구조적 프로그래밍이 가능
  • 컴퓨터의 처리구조과 비슷하여 실행 속도가 빠르다

 

단점

◽ 유지 보수 어려움

=> 순서대로 코드를 작성하므로 앞의 코드가 바뀌면 결과가 달라질 수 있음

 

◽ 순서대로 작성하기 위해서 앞에서부터 코드를 이해해야 하므로 긴 코드는 이해하기 어려움

=>대형 프로젝트에 맞지 않음

 

대표적 언어: C, 포트란

📌 객체 지향 프로그래밍 (Object Oriented Programming)

데이터와 기능을 하나로 묶어 재사용성을 갖는 프로그래밍 설계 철학

> 클래스에 객체를 만들기 위한 생성자 함수, 속성(데이터)과 메서드(기능)을 넣고, 인스턴스를 만들어 재사용성을 가진다.

주요 개념 4가지

✔ 캡슐화 (Encapsulation)

  • 데이터와 기능을 하나로 묶는 것
  • 은닉(hiding) : 구현은 숨기고 기능은 노출시킴 (코드, 데이터)
  • 느슨한 결합(Loose Coupling)에 유리 : 구현 수정이 용이
    • 느슨한 결합
      : 코드 실행 순서에 따라 절차적으로 코드를 작성하는 게 아니라, 코드가 의미하는 실제 기능과 흡사하게 코드를 모아 결합하는 것

 

 

✔ 추상화 (Abstraction)

  • 클래스를 사용하는 사람이 필요하지 않은 메서드를 노출시키지 않고, 단순한 이름으로 정의

예)

메서드의 기능 : 나이를 가져오는 메서드

메서드의 목적 : 성인인지 아닌지 체크하기 위함

❌ getAge()

⭕ checkAdult()

 

✔ 상속 (Inheritance)

  • 부모 클래스의 속성을 자식 클래스가 상속받는 것
  • 기본 클래스(base class)의 특징을 파생 클래스(derived class)가 상속받는 것
  • subclass extends superclass : superclass의 특징을 subclass에 상속시킴

 

 

✔ 다형성 (Polymorphism)

  • 동일한 메서드에 대해 if/else if와 같은 조건문 대신 객체의 특성에 맞게 달리 작성

> 오버라이딩 (overrading)

자식 클래스가 부모 클래스에 있던 메서드를 덮어 씌우는 것