11월 13일 (금)
제가 이해한 대로 작성한 내용이다 보니, 정확한 정보가 아닐 수 있습니다.
고쳐야 할 부분이 있다면, 편하게 얘기해 주시면 감사하겠습니다.🙏🏻
추상화: 일반화를 통한 단순화, 복잡함 속에서 필요한 관점만 추출하는 것
프로그래머 입장에서 필요한 모든 개념을 추출
일반화: 서로 다른 개체들로부터 공통된 개념을 추출하는 것
캡슐화: 개체 상태를 나타내는 속성 정보를 private하게 관리하는 것
직접적으로 속성 정보를 변경하는 것 대신에, 메세지 같은 요청을 보내어 그 응답에 의해 개체 상태를 변경
은닉화: 개체 상태를 나타내는 정보들이 외부에 드러나지 않도록 감추는 것
상속: 하나의 클래스의 특징을 다른 클래스가 물려받아 그 속성과 기능을 동일하게 사용하는 것
재사용과 확장에 의미가 있음(상속은 수직, extension은 수평)
다형성: 다양한 형태로 나타낼 수 있는 형식, 동일한 요청에 대해 각각 다른 방식으로 응답
오버라이딩: 상위 클래스에서 상속 받은 메서드를 하위 클래스에서 필요에 따라 재정의
동일 요청이 개체에 따라 다르게 응답
class Dog { func bark() { print(“멍멍") }
class Poodle: Dog { override func bark() { print(“왈왈”) }
class Husky: Dog { override func bark() { print(“으르렁”) }
class Bulldog: Dog { override func bark() { super.bar(); print(“낑낑”) }
Var dog: Dog = Dog()
dog.bark() // 멍멍
dog: Poodle()
dog.bark() // 왈왈
dog: Husky()
dog.bark() // 으르렁
dog: Bulldog()
dog.bark() // 멍멍, 낑낑
오버로딩: 동일한 메서드가 매개 변수의 이름, 타입, 개수 등의 차이에 따라 다르게 동작하는 것
동일 요청이 매개 변수에 따라 다르게 응답
func greeting() { print(“hi there!”) }
func greeting(myName: String) { print(“hi there!, I’m \(myName)!”) }
func greeting(to name: String) { print (“hi \(name)!”) }
https://jinshine.github.io/2018/05/22/Swift/5.OOP%20in%20Swift/ // 객체지향프로그래밍