사실 우리네 인생도 객체지향프로그래밍이다.
클래스는 사람들의 역할과 정체성을 정의한다.
예를 들면, 학생, 개발자, 예술가 등등
class Developer {
var name: String
func code() {
print("\(name)이는 코딩 중")
}
}
클래스를 바탕으로 태어난 존재가 객체다.
나는 Developer
클래스에서 만들어진 하나의 인스턴스다!
let eden = Developer(name: "eden")
eden.code() // eden이는 코딩 중
Human
이라는 부모 클래스를 상속받은 Developer
클래스
class Human {
func sleep() { print("자는 중") }
}
class Developer: Human {
func code() { print("코딩 중") }
}
let sangsok = Developer()
sangsok.sleep() // 부모로부터 물려받은 행동
sangsok.code() // 나만의 능력
"일해라!"라고 했을 때,
개발자는 코딩하고, 디자이너는 디자인하고, 마케터는 마케팅하고, 운동선수는 운동함.
protocal Worker {
work()
}
class Developer: Worker {
print("코딩 중")
}
class Designer: Worker {
print("디자인 중")
}
class Marketer: Worker {
print("마케팅 중")
}
class Athelete: Worker {
print("운동 중")
}
let people: [Worker] = [Developer(), Designer(), Marketer(), Athelete()]
for person in people {
person.work()
}
사람은 속마음을 다 보여주진 않는다
private
한 감정이나 정보는 다른 사람이 알 수 없다.
class Person {
private var secret = "나만의 비밀"
func speak() {
print("안녕하세요")
}
}
사람은 자신을 한 줄로 소개한다.
"저는 개발자예요" → 내부 구현은 굳이 말 안 해도 됨.
OOP | 인생 |
---|---|
클래스 | 직업, 역할, 정체성 |
객체 | 살아 있는 사람 |
상속 | 부모에게 물려받은 것 |
다형성 | 같은 말, 다른 행동 |
캡슐화 | 사생활 보호 |
추상화 | 명함에 적힌 정보만 노출 |