객체 지향 프로그래밍

객체 지향 프로그래밍은 컴퓨터 프로그램을 여러 개의 독립된 단위, 즉 “객체”들의 모임으로 파악하고자 하는 것이다.

01. Class

02. Instance

01. Subject 클래스 생성
Class Subject {
	var name: String = ""
	var score: Int = 0
}

02. instance 생성
var newSubject: Subject = Subject()
// Subject() == Subject.init(){} == 초기화 method

03. Method

var s1 = Student(name: "Amy", id: 2011111050)
s1.setSubjects(subjects: [math, english, computer])

04. 객체의 속성

추상화(Abstraciton)

class Subject {
var name: String
var score: Int = 0
var grade: String = "F"
var gradePoint: Double = 0.0
var credit: Int = 1

init(name: String) {
    self.name = name
} // instance를 생성할 때, 무조건 name이 초기화 됨

func setScore(score: Int) {
    self.score = score
} // method 함수 구현
}

캡슐화(Encapsulation)

은닉화

class Subject {
    private var name: String
    private var score: Int = 0
    // 외부에서 score에 setscore로 값을 할당은 할 수 있으나, 값을 직접 읽을 수는 없음

    func setScore(score: Int) {
        self.score = score
    } // method 함수 구현
    
    init(name: String) {
        self.name = name
    } // instance를 생성할 때, 무조건 name이 초기화 되고, 추후에 바꿀 수도 없음
}

상속성(Inheritance)

class ViewController: UIViewController { }

다형성(Polymorphism)

class ViewController: UIViewController {
    override func viewDidLoad() {
    // func viewdDidLoad는 원래 부모의 것(UIViewController)이나, 이를 재정의하겠다는 의미
        super.viewDidLoad()
        // 부모(super)의 method(viewDidLoad)를 먼저 호출해주고 아래에  viewDidLoad() 재정의 코드 작성
}