[TIL] 2024-12-05_객체 지향 프로그래밍

Yuri·2024년 12월 5일

TIL

목록 보기
1/59
post-thumbnail

📕 Today I Learned - 오늘 내가 공부한 것을 정리합니다.

1. 객체 지향 프로그래밍

절차 지향 프로그래밍

  • 프로그램의 흐름을 순차적으로 따르며 처리하는 방식. 즉, “어떻게” 를 중심으로 프로그래밍 한다.

객체 지향 프로그래밍

  • 실제 세계의 사물이나 사건을 객체로 보고, 이러한 객체들 간의 상호작용을 중심으로 프로그래밍 하는 방식. 즉, “무엇을” 중심으로 프로그래밍 한다.

둘의 중요한 차이

  • 절차 지향은 데이터와 해당 데이터에 대한 처리 방식이 분리되어있다.
  • 반면, 객체 지향에서는 데이터와 그 데이터에 대한 행동(메서드)이 하나의 ‘객체’ 안에 함께 포함되어 있다.

객체란?

세상의 모든 사물을 단순히 추상화해보면 속성(데이터)과 기능 딱 2가지로 설명할 수 있다.

  • 자동차
    • 속성: 차량 색상, 현재 속도
    • 기능: 엑셀, 브레이크, 문 열기, 문 닫기
  • 동물
    • 속성: 색상, 키, 온도
    • 기능: 먹는다. 걷는다.
  • 게임 케릭터
    • 속성: 레벨, 경험치, 소유한 아이템들
    • 기능: 이동, 공격, 아이템 획득

객체 지향 프로그래밍은 모든 사물을 속성기능을 가진 객체로 생각하는 것이다. 객체에는 속성과 기능만 존재한다.

객체 지향의 특징은 속성과 기능을 하나로 묶는 것 뿐만 아니라 캡슐화, 상속, 다형성, 추상화, 메시지 전달 같은 다양한
특징들이 있다.

클래스와 인스턴스

클래스(Class)와 인스턴스(Instance)는 객체 지향 프로그래밍에서 중요한 개념이다.

클래스 - Class

클래스는 객체를 생성하기 위한 ‘틀’ 또는 ‘설계도’이다. 클래스는 객체가 가져야 할 속성(변수)과 기능(메서드)를 정의한다. 예를 들어 학생이라는 클래스는 속성으로 name, age, grade를 가진다.

  • 틀 : 붕어빵 틀(클래스) → 붕어빵(객체 또는 인스턴스)
  • 설계도 : 자동차 설계도(클래스) → 테슬라 Y (객체 또는 인스턴스)

객체 - Object

객체는 클래스에서 정의한 속성과 기능을 가진 실체이다. 객체는 서로 독립적인 상태를 가진다.
→ student1 과 student2 는 같은 클래스에서 만들어졌지만, 서로 다른 객체이다.

인스턴스 - Instance

특정 클래스로부터 생성된 객체, 주로 객체가 어떤 클래스에 속해 있는지 강조할 때 사용한다.
→ student1은 Student 클래스의 인스턴스다.

클래스가 객체의 설계를 정의하고, 인스턴스는 클래스에 따라 생성된 실제 객체를 뜻한다.
클래스에서 여러 인스턴스를 생성할 수 있고, 각 인스턴스는 클래스의 정의에 따라 각각 독립적인 데이터와 동작을 가지고 있다.

객체 vs 인스턴스

용어상 인스턴스는 객체보다 좀 더 관계에 초점을 맞춘 단어이다.
"student1은 Student의 객체이다." → "student1은 Student의 인스턴스이다."라고 특정 클래스와의 관계를 명확히 할 때 인스턴스라는 용어를 주로 사용한다.
⇒ 하지만 둘다 클래스에서 나온 실체라는 핵심 의미는 같기 때문에 보통 둘을 구분하지 않고 사용한다.

💭 대표적인 객체 지향 프로그래밍 언어 Java를 공부하며 객체 지향 프로그래밍과 객체 지향 프로그래밍에서 중요한 개념인 클래스, 인스턴스를 정리하였다. Velog 첫 포스팅으로 적절한 주제다 :) 나머지 자료들은 주말동안 시간을 내어 천천히 옮겨 놓아야겠다.

profile
안녕하세요 :)

0개의 댓글