Skip to content

Latest commit

 

History

History
56 lines (41 loc) · 2.36 KB

2020_11_13.md

File metadata and controls

56 lines (41 loc) · 2.36 KB

TIL (Today I Learned)

11월 13일 (금)

제가 이해한 대로 작성한 내용이다 보니, 정확한 정보가 아닐 수 있습니다.
고쳐야 할 부분이 있다면, 편하게 얘기해 주시면 감사하겠습니다.🙏🏻


OOP의 특징

추상화: 일반화를 통한 단순화, 복잡함 속에서 필요한 관점만 추출하는 것
프로그래머 입장에서 필요한 모든 개념을 추출

일반화: 서로 다른 개체들로부터 공통된 개념을 추출하는 것

캡슐화: 개체 상태를 나타내는 속성 정보를 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/ // 객체지향프로그래밍

다음 TIL 보기