흔히 객체지향 언어라고 하면 클래스를 떠올리지만, 객체지향 언어는 크게 클래스 기반 언어(ex: java, swift)와 프로토타입 기반 언어(ex : javascript)로 분류할 수 있다.
다음은 클래스 기반 객체지향 언어의 클래스와 객체 개념에 대한 글이다.
클래스는 '틀', 객체는 '실체'
자동차를 예로 들면 클래스는 자동차를 만드는 틀, 객체는 실제로 만들어진 자동차를 의미한다.
클래스는 속성(property)과 메소드로 구성된다.
아래 Car 클래스로 만들어진 자동차는 엔진, 바퀴, 차체 등의 속성을 가지고 있고 시동을 거는 기능, 브레이크를 밟는 기능을 메소드로 가지고 있다.
Car 클래스
class Car {
var engines : String //엔진
var wheels : String //바퀴
var body : String //차체
init() {
self.engines = "엔진"
self.wheels = "바퀴"
self.body = "차체"
}
func startACar() {
//시동을 거는 기능
}
func putBreakOn() {
//브레이크를 밟는 기능
}
}
newCar 객체 생성
let newCar = Car()
Car 클래스를 상속받은 Truck 클래스
class Truck : Car {
var cargo : String //화물칸
override init() {
self.cargo = "화물칸"
super.init()
}
}
newTruck 객체 생성
let newTruck = Truck()
프로토타입 기반 언어에서 객체의 개념은 클래스 기반 언어에서의 그것과 같으나, 엄밀히 말하면 클래스는 존재하지 않는다.
클래스 기반 언어는 클래스라는 틀을 이용해 객체를 찍어내서 만든다고 표현하고, 프로토타입 기반 언어에서는 틀이 없는 자유로운 형태의 객체가 만들어진다.
프로토타입 기반 언어에서 상속은 객체 자체의 복제나 위임으로 이루어진다.
// 초기모델 obj객체를 복제
var cloneObj = clone(obj);
// 복제된 객체를 위임(상속)
otherObj.__proto__ = cloneObj;
'공부하기 > 다른 PL' 카테고리의 다른 글
Blender 블렌더 초보 맥에서 단축키가 잘 안되는 것 같을 때 해결방법 (2) | 2024.06.19 |
---|---|
알고리즘 문제풀이 - 선형검색과 보초법 & 이진탐색 (Python) (1) | 2021.01.08 |
알고리즘 문제풀이 - 소수구하기 & 기수 (Python) (2) | 2020.12.23 |
웹 크롤링 PHP html dom parser (0) | 2019.09.06 |