객체지향과 JAVA 클래스

윤희종·2025년 7월 30일

객체지향 프로그래밍이란 무엇인가?

객체지향 프로그래밍은 실제 세계에 존재하는 객체들 간의 상호작용(또는 의사소통)을 모방하여 프로그램을 구성하는 방식이다.

객체는 모든 것이다.
우리가 눈으로 인식하는, 손으로 만져지는, 머리로 상상하는 모든 것이 객체이다.

각각의 객체는 다음과 같은 특징을 가진다.

  • 객체는 행위를 가진다.
  • 객체는 속성을 가진다.

이 세상의 모든 객체는 행위가진다.
가진다라 표현한 이유는, 객체지향 프로그래밍에서 객체는 수동적인 존재이기 때문이다.

클래스란 무엇인가?

클래스는 분류이다.

위에서 객체는 행위속성을 가진다고 했다.
이 객체들을 비슷한 속성을 가진 것끼리 분류하기 위한 개념이 클래스이다.

따라서, 클래스는 분류에 대한 개념이지 실체가 아니다.
클래스를 붕어빵틀, 인스턴스를 붕어빵에 비유하는 글을 많이 봤을 것이다.

그렇다면, 아래에 동의 하는가?

붕어빵틀 붕어빵 = new 붕어빵틀();

클래스와 인스턴스 사이의 관계에 어색함을 느낄것이다.
이는, 클래스를 분류로 보는것이 아닌, 하나의 실체로 봤기 때문이다.
실체하는것은 인스턴스 뿐이다.

클래스가 분류라는것을 인정하고 다음과 같은 예제를 보자.

붕어빵 붕어빵1 = new 초콜릿붕어빵();
붕어빵 붕어빵2 = new 딸기붕어빵();
붕어빵 붕어빵3 = new 복숭아붕어빵();
  • 이렇듯, 클래스객체의 관계를 분류실체로 정의한다.

OOP 4 특성

객체지향의 4대 특성은 클래스와 객체를 통해 구현된다.

  • 추상화
    객체 지향의 추상화는 모델링이다.
    각 객체는 실세계 객체의 모든 정보를 포함할 필요가 없다.
    소프트웨어에서 해결하고자 하는 영역 (도메인)에서 필요로 하는 정보만을 프로그램 내에서 가지면 된다.따라서, 추상화를 위해선 도메인의 정의가 우선이 되야 한다.

추상: 여러가지 사물이나 개념에서 공통되는 특성이나 속성 따위를 추출하여 파악하는 과정

  • 캡슐화
    이전에 말했듯이, 객체지향 프로그래밍은 객체간의 의사소통을 모방하여 프로그래밍하는 것이다.
    각 객체는 고유의 속성을 가진다.
    캡슐화는 이 속성을 가리고 행동을 통해 동작하도록 한다
    이를 통해, 객체의 속성이 외부에 의해 의도치않게 변경되는 위험을 제거할 수 있다.

  • 상속
    상속은 슈퍼클래스를 확장하고, 재사용하는것이다.
    서브 클래스슈퍼 클래스의 관계는 is kind of관계이다.
    서브 클래스 is kind of 슈퍼 클래스
    이는 위에서 말한 분류의 개념에 입각한 것이다.

  • 다형성
    하나의 인터페이스나 메서드가 다양한 형태의 객체나 동작을 처리할 수 있도록 하는 개념
    하나의 참조를 통해, 여러 인스턴스를 호출할 수 있는점이 가장 큰 예이다.

profile
이건 나는 게 아냐, 멋지게 추락하는거지

0개의 댓글