티스토리 뷰

(Object-Oriented Programming, 객체 지향 프로그래밍)이란?

 

프로그래밍 세계에서 철학을 이야기하는 단어이다. 모든 것은 Object로 설명이 가능해진다는 이야기이다. 

 

 

https://www.miltonmarketing.com/coding/programming-concepts/object-oriented-programming-oop/

 

예를 들어, 위의 그림과 같이 Car라는 오브젝트가 있다고 하면 자동차가 공통적으로 가지고 있는 기능과 속성이 있다. 구체적으로 말해보자면 주유를 받는다. 속도를 설정한다. 운전을 한다 등 자동차의 기능이 있고, 자동차의 속성으로 연료는 얼마나 필요한지, 최고 속도는 어떻게 되는지, 몇 인승인지, 색깔은 어떻게 되는지가 있을 수 있다.

 

그래서 Car라는 클래스(객체)를 만들어두고 속성을 다르게 정의할 수 있다면 여러 가지의 자동차를 만들 수 있다. Car라는 클래스에서 속성과 기능을 추가해서 포르쉐 마칸, 미니, 골프를 만들어 낼 수 있다.

 

즉, 클래스를 프로토타입이라고 부를 수 있다. 세부사항의 정의되지 않은 청사진을 가지고 특정 세부사항을 정의하면 객체로 만들 수 있다는 것이다. 이를 클래스의 인스턴스(객체)라고 할 수 있다. 포르쉐 마칸, 미니, 골프를 인스턴스라고 할 수 있다. 

 

특정 세부사항은 어디에서 정의할 수 있을까? 클래스는 constructor를 가지고 있다. 그래서 클래스 Car에 자동차의 속성과 기능을 constructor에다가 정의한다. 

 

객체 지향 프로그래밍에서 보통 객체를 만들 수 있는 클래스를 정의합니다. 클래스로 객체를 만들었을때, 가져야 하는 속성과 함수를 정의를 하게 된다. 우리가 원하는 객체를 만들 수 있다.

 


(OOP, 객체 지향 프로그래밍)의 4가지 개념

 

1 ) Encapsulation(캡슐화) : 클래스 또는 오브젝트의 프로퍼티 및 메서드를 한 곳에 모아 둔다. 복잡성과 재사용성을 높여준다.

 

예제 ) 첫 번째 코드는 Encapsulation(캡슐화)되기 전 코드이다(절차 지향적 코드)

 

한 사원의 데이터(프로퍼티)와 월급(메서드)을 구하는 기능을 가졌다. 

 

만약에 사원이 한 명이 아니고 여러명이라면? 각 사원에 대한 프로퍼티가 사원 수만큼 정의해야 한다. 더불어 월급을 구하는 기능에서도 매개변수로 들어갈 각 사원의 프로퍼티들이 입력될 수 없게 된다.

let baseSalary = 30_000;
let overtime = 10;
let rate = 20;

function getWage(baseSalary, overtime, rate) {
  return baseSalary + (overTIme * rate);
}

 

두 번째의 코드처럼 객체 employee 만들어서 캡슐화할 수 있다. 객체 employee안에 프로퍼티와 메서드를 정의한다(객체 지향적 코드)

 

사원의 수 만큼 객체를 만들어서 사용하면 월급을 구하는 기능을 쉽게 사용할 수 있게 된다.

let employee = {
  baseSalary : 30_000,
  overtime: 10,
  rate: 20,
  getWage: function() {
    return this.baseSalary + (this.overtime * this.rate); // this === 객체 employee
  }
};

employee.getWage();

 

 

2 ) Inheritance(상속) : 부모 클래스의 특징을 자식이 물려받는다. 똑같은 코드를 줄여준다.

 

3 ) Abstraction(추상화) : 내부는 복잡하게 되어 있지만 사용자가 사용하기에는 간단한 것이다. 예를 들어, 스마트 폰으로 전화 통화를 할 때, 우리는 간단하게 통화할 번호를 입력하고 통화버튼을 누르면 통화가 된다. 하지만 내부에서는 어떤 원리로 전화 통화가 가능한지는 모른다. 복잡성을 줄여준다.

 

4 ) Polymorphism(다형성): 상속을 통해 부모 클래스의 기능을 이용할 수 있다. 

 


 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함