Swift OOP(Object Oriented Programing)
2018, Oct 08
* OOP (Object Oriented Programming)
- 프로그래밍에도 코드를 더 효율적으로 만들고 작성하기 위한 패러다임이 존재.
- 절차 지향형, 객체지향형, 함수형, 논리형 등
- swift 언어는 객체지향형, 함수형, 프로토콜 지향 프로그래밍을 모두 다룰 수 있는 언어. 다만 IOS 프레임워크가 객체지향형 프로그래밍으로 구현되어 있어서, 객체지향 프로그래밍을 하도록 권장
- 객체지향: 프로그램을 여러 객체들의 모임으로 보는 것. 각각의 객체는 메세지를 주고 받을 수 있으며, 데이터를 처리할 수 있다.
- 객체지향 기본 구성 요소 : 클래스, 객체, 메소드, 프로퍼티 등
- 객체 : 클래스의 인스턴스로 자신만의 속성(property)와 행위(method)를 갖고 있다.
- 클래스 : 붕어빵을 만드는 기계 / 자동차 도면
- 객체 : 붕어빵 / 출고된 자동차
* 클래스 파일을 메모리에 올리면 객체화 되고, 객체들의 속성과 명령어가 실행되면서 프로그램이 실행되는 것 !
- 객체지향 프로그래밍이란 캡슐화, 다형성, 상속 을 이용하여 코드 재사용을 증가시키고, 유지보수를 감소시키는 장점을 얻기 위해서 객체들을 연결시켜 프로그래밍 하는 것
- 객체지향의 5대 특징
-
추상화 : 객체들의 공통적인 부분을 뽑아서 따로 구현해놓는 것. 공통적인 부분만 뽑아내기 때문에 구체적인 정보를 담지 못하고, 추상적인 정보가 모여 있어서 ‘추상화’가 특징
-
캡슐화, 은닉화 : 캡슐화, 은닉화는 같이 발생한다. 객체의 속성과 행위를 하나로 묶고(캡슐화), 실제 구현 내용 일부를 외부에 감추는(은닉화) 것.
-
상속성 : 하나의 클래스가 갖고 있는 속성(property)과 행위(method)를 다른 클래스가 상속 받을때 사용.
-
다형성 : 하나의 method나 class를 다양한 방법으로 동작시키는 것. 오버로딩이나 오버라이드가 대표적인 예시. 오버로딩은 같은 이름의 함수를 파라미터에 따라 다양하게 구현하는 것을 의미하고, 오버라이딩은 상위 클래스가 가지고 있는 메소드가 하위 클래스로 상속되어 하위 클래스에서 재정의해서 사용하는 것을 의미.