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

정혜인·2024년 8월 3일

기초공부

목록 보기
5/18

💨 객체 지향 프로그래밍

: OOP (Object-Oriented Programming)

⭕ 의미

💡 객체의 상태(state)와 행동(behavior)을 구체화하는 형태의 프로그래밍

❗ 프로그램을 단순히 데이터와 처리 방법으로 나누는 것이 아닌, 프로그램을 수많은 객체(Object)라는 기본 단위로 나누고 이들의 상호작용을 서술하는 방식을 의미

❗ Javascript는 프로토타입 기반의 객체지향 프로그래밍을 지원

❗ 장점 : 코드의 재사용성, 유지보수성, 가독성, 대규모 프로젝트의 관리 측면에서 good!

💨 Object(객체)

⭕ 의미

💡 클래스(Class)를 기반으로 그대로 생성된 실체, 모든 instance를 대표하는 포괄적인 개념
(여러개의 property와 method를 가지고 현실의 사물을 흉내내는 존재)

❗객체는 다른 객체나 외부로부터 숨겨야 할 데이터를 내부에 저장하고, 메서드(method)를 통해 데이터에 접근하거나 변경함 (캡슐화 과정)
Attribute (속성) : 객체의 상태를 나타내고, 객체의 특정 값을 저장

Method (메서드) : 객체가 수행하는 동작을 나타내며, 객체의 속성을 변경하거나 객체의 상태에 따른 다른 동작을 수행

⭕ 특징

  1. Collaboration (상호작용) : 다른 객체와 협력하여 작업을 수행하며, 이를 위해 메시지를 주고받는다는 특징
  2. Inheritance (상속) : 다른 객체로부터 기존 클래스의 속성과 동작을 물려받을 수 있으며, 이를 기반으로 새로운 클래스를 작성할 수 있다는 특징
  3. Polymorphism (다향성) : 같은 이름의 메서드를 사용하지만, 다른 기능을 한다는 의미

💨 Instance(인스턴스)

⭕ 의미

💡 클래스(Class)를 기반으로 소프트웨어에 구현된 구체적인 실체,
객체가 메모리에 할당되어 실제 사용될 때 instance라고 정의

(여러개의 property와 method를 가지고 현실의 사물을 흉내내는 존재)

❗객체는 다른 객체나 외부로부터 숨겨야 할 데이터를 내부에 저장하고, 메서드(method)를 통해 데이터에 접근하거나 변경함 (캡슐화 과정)
Attribute (속성) : 객체의 상태를 나타내고, 객체의 특정 값을 저장

Method (메서드) : 객체가 수행하는 동작을 나타내며, 객체의 속성을 변경하거나 객체의 상태에 따른 다른 동작을 수행

💨 Class

⭕ 의미

💡 객체를 생성하기 위한 틀 또는 설계도

❗ 클래스는 객체를 만들기 위한 필드(field)와 메서드(method)를 정의하고, 객체를 생성하기 위한 속성과 동작을 결정

💨 객체 생성 과정

  1. 클래스 정의 : 객체를 생성하기 위한 클래스를 정의합니다.
  2. 인스턴스 생성 : 클래스를 사용하여 객체를 생성합니다. 이 과정을 인스턴스화(Instantiation)라고 합니다.
  3. 인스턴스 초기화 : 객체를 초기화합니다. 이 과정을 생성자(Constructor)라고 합니다.
  4. 객체 사용 : 객체를 사용하여 속성과 동작을 수행합니다.

💨 클래스, 객체, 인스턴스 차이 (Java example)

/* 클래스 */
public class Animal {
  ...
}
/* 객체와 인스턴스 */
public class Main {
  public static void main(String[] args) {
    Animal cat, dog; // '객체'

    // 인스턴스화
    cat = new Animal(); // cat은 Animal 클래스의 '인스턴스'(객체를 메모리에 할당)
    dog = new Animal(); // dog은 Animal 클래스의 '인스턴스'(객체를 메모리에 할당)
  }
}

0개의 댓글