실무를 하면서 흘러가는 시간에 몸을 맡기다 보면 어느샌가 기본 개념들이 가물가물해지는 경우가 있습니다.
그런고로 오늘은 프로그래밍의 기초부터 한번 살펴보려고 합니다. 예제코드는 Swift5 로 모두 작성되니 이 부분은 참고 부탁드립니다.
객체지향 프로그래밍(Object-Oriented Programming) 이란, 과거의 절차형 프로그래밍과는 달리 프로그래밍을 명령어의 목록으로 바라보는 것이 아니라, 여러개의 독립된 단위인 객체들의 모임으로 생각하는 것입니다.
즉 객체들이 서로 데이터를 주고 받고, 통신을 하면서 이 모임이 하나의 프로그램이 되는 것이라고 보시면 될 것 같습니다.
객체 지향의 기본 구성 요소는 아래와 같습니다.
1. 클래스(Class)2. 객체(Object)3. 메서드(Method)
클래스는 간단히 설명드리자면, 객체가 가지고 있어야 할 속성값들을 정의해둔 것이라고 보시면 되겠습니다. 간단한 예시를 들어보도록 하겠습니다.
class Person {
var name: String
var age: Int
init(name: String, age: Int) {
self.name = name
self.age = age
}
}
Person 이라는 클래스는 기본적으로 name 과 age 라는 속성을 가지고 있어야만 합니다. 즉 코드 상에서 봤을 때 이름과 나이를 가지고 있지 않은 것은 Person 이라고 정의될 수가 없다는 것이죠. 그리고 이 속성값들을 저희는 프로퍼티(Property) 라고 부르도록 하겠습니다.
그렇다면 객체는 무엇일까요? 객체는 바로 이 클래스들을 실제로 생성한 것이라고 보시면 될 것 같습니다.
var newStudent: Person
현재 상태 newStudent 라는 Person 클래스를 객체로 생성하여 선언만 해준 상태입니다.
이제 실제 메모리에 할당하기 위하여 아래와 같이 인스턴스를 생성해줍시다.
newStudent = Person(name: "한량", age: 32)
아래와 같이 객체를 선언해줌과 동시에 인스턴스를 바로 생성해줄 수도 있습니다.
var newStudent: Person = Person(name: "한량", age: 32)
이제 마지막으로 메서드에 대해서 살펴보겠습니다. 메서드는 클래스가 하는 행동이라고 보시면 편할것 같습니다.
위에서 Person 클래스 내에 talk 라고 하는 메서드를 정의해보도록 하겠습니다.
func talk(_ message: String) {
print("\(name): \(message)")
}
이후에 newStudent.talk("안녕하세요") 을 실행하게 되면 아래와 같은 결과물이 출력됩니다.
저희가 메서드 내부에서 이름과 메시지를 호출하도록 정의했기 때문이겠죠?
오늘은 일단 객체 지향의 기본 요소부터 살펴보았습니다.
다음 시간에는 객체 지향의 핵심 개념 들에 대해 살펴보도록 하겠습니다.
다음에 또 만나요 제발~
참고자료
'Swift 개발 이야기' 카테고리의 다른 글
Insertion Sort Swift (0) | 2020.03.24 |
---|---|
Swift 로 알아보는 객체지향 프로그래밍 - 2 (0) | 2020.02.19 |
API 를 여러개 호출해야할때 모든 API 가 호출되었음을 확인하려면? (0) | 2020.02.03 |
SwiftUI를 사용하지 않고 Preview 사용하기 (0) | 2020.01.03 |
SnapKit 을 이용하여 Dynamic Height ScollView 를 만드는 법 (1) | 2019.10.10 |