Written by
Amy
on
on
객체 지향 프로그래밍
객체 지향 프로그래밍은 컴퓨터 프로그램을 여러 개의 독립된 단위, 즉 “객체”들의 모임으로 파악하고자 하는 것이다.
01. Class
- 같은 종류의 집단에 속하는 속성(attribute = variable)과 행위(behavior = function)를 정의한 것
02. Instance
- Class의 실체화된 인스턴스(객체)는 자신만의 고유한 속성(변수, 함수)을 가질 수 있으며, 클래스에서 정한 행위(함수, 메소드)를 수행할 수 있다.
- 클래스를 실체화(Instance) 하면 객체(Object)를 만들수 있다.
- Swift에서 객체는 보통 Instance로 표현한다.
03. Method
- 클래스로부터 생성된 객체를 사용하는 방법으로서 객체에 명령을 내리는 메시지라 할 수 있다.
- Method는 Class내에 선언된 함수를 말하며, 이는 객체에 의해 발현된다.
04. 객체의 속성
추상화(Abstraciton)
- 클래스를 정의하는 것 : 공통의 속성이나 기능을 묶어 이름을 붙이는 것
캡슐화(Encapsulation)
- class안에 관련된 변수와 메소드를 묶어 넣는 것
- 코드의 수정 없는 재활용을 위한 작업
은닉화
- 메소드의 로직이나 멤버 변수들에 대해 외부로 보이지 않게 하는 것
- 접근지정자: 클래스의 멤버에 접근할 수 있는 권한을 통제 (ex. private, public)
- 데이터에 대한 읽기 or 쓰기 권한 구분 가능
- 입력데이터의 유효성 검증 부분을 로직에 포함 시킬 수 있음 (ex. 음수는 입력 안되게끔 처리)
상속성(Inheritance)
- 상위 개념의 특징을 하위 개념이 물려받는 것
- 부모 클래스(super, parent)와 자식 클래스(sub, child)
- 자식 클래스가 부모 클래스의 속성을 이용할 수 있게 하는 기능
- [참고] Class는 상속하는 것이고, Struct에서 Protocol은 선택하는 것
다형성(Polymorphism)
- 기존에 구현되어있는 클래스를 확장, 변형
- 재정의(Override) : 부모 클래스에게서 물려받은 성질을 그대로 사용하지 않고 자식 클래스에게 맞는 형태 또는 행위로 변경하여 사용할 수 있는 기능
- 상속을 받은 클래스에 한해서 부모 클래스의 속성(메소드)을 재정의 가능하다.