Skip to Content
Suffering builds character
아카이브10.Java특징프로그래밍 패러다임4. 명령형 - 객체 지향

4. 명령형 - 객체 지향

Q. 현실 세계를 단 2가지만으로 분류한다면?(단, 중복, 배제되는 부분 없이, MECE)

분류 방법

→ 나, 그리고 나를 제외한 모든 것으로 분류

나를 주체(主體, Subject)
나를 제외한 모든 것은 객체(客體, Object)라고 표현할 때,
(물론 상대방 입장에서는 내가 객체가 될 수 있음)

프로그램을 작성하는 나(개발자)는 주체(S, Subject)
프로그램의 소스 코드로 작성될(?) 나를 제외한 모든 것은 객체(O, Object)

1. 객체 지향 프로그래밍의 기본 사상 및 지향점

“세상에 존재하는 모든 것은 ‘사물(Object)‘이다.”

물 분자부터 우주까지 이 세상의 모든 것들이 각각의 객체(Object)로 이루어져 있다고 할 때,

객체 지향 프로그래밍의 기본 사상이자 지향점은,

인간(즉, 주체이자 개발자인 나)이
세상에 존재하는 모든 사물(즉, 객체이며 나를 제외한 모든 것)을 인식하고 이해하는 방식처럼,
이러한 관점을 프로그래밍에 적용해보자는 것

→ 세상을 내가 아닌 모든 것(객체)으로 나누고,
인간이 사물을 보고 이해하듯이 그 관계와 행동을 코드로 모델링하는 방식


정리하면, 객체 지향 프로그래밍의 기본 사고 방식이자 핵심 특징은 다음과 같음

  1. 세상에 존재하는 모든 것은 사물, 즉 객체(Object) 이다
    ex. 사람이라는 객체, 호랑이라는 객체
  2. 각각의 개별 사물(instance)은 고유함
    ex. 실세계에서 나는 고유하게 존재하기 때문
  3. 사물은 속성(Field)과 행위(Method)를 가질 수 있음
    ex. 나는 이름이 있고, 노래를 할 수 있음
💡
Tip

영어 문장의 5형식
S V - 1형식
S V C - 2형식
S V O - 3형식


2. 객체 지향 프로그래밍 언어

객체 지향 방식으로 작성하는 대표적인 프로그래밍 언어는 Java, C++

앞서 살펴본 주문/결제를 수행하는 프로그램을 Java로 작성한 예시는 다음과 같음

Java로 작성한 주문/결제를 수행하는 프로그램 코드

Main.java
// 주문 관련 클래스 class Order { private int menuNumber; private int price; public void selectMenu(int menuNumber) { this.menuNumber = menuNumber; if (menuNumber == 1) price = 3000; else if (menuNumber == 2) price = 4000; else price = 0; } public int getPrice() { return price; } public boolean isValid() { return price > 0; } } // 결제 관련 클래스 class Payment { public void process(int amount, int price) { if (amount >= price) { System.out.println("결제가 완료되었습니다. 거스름돈: " + (amount - price) + "원"); } else { System.out.println("결제 실패: 금액이 부족합니다."); } } } // 실행 클래스 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); Order order = new Order(); System.out.print("메뉴를 선택하세요 (1. 김밥 - 3000원, 2. 라면 - 4000원): "); int menu = scanner.nextInt(); order.selectMenu(menu); if (!order.isValid()) { System.out.println("잘못된 메뉴입니다."); return; } System.out.println("주문 완료. 총 금액은 " + order.getPrice() + "원입니다."); System.out.print("결제 금액을 입력하세요: "); int amount = scanner.nextInt(); Payment payment = new Payment(); payment.process(amount, order.getPrice()); } }
Last updated on