티스토리 뷰

객체 지향 프로그래밍

(Object-Oriented Programming)




1) 이론적 정의

 


 - 객체 지향 프로그래밍(OOP)이란 캡슐화(Encapsulation), 다형성(Polymorphism), 상속(Inheritance)을 이용하여 코드 재 사용을 증가시키고, 


    유지보수를 감소시키는 장점을 얻기 위해서 객체들을 연결시켜 프로그래밍 하는 것.




  - 단순한 데이터 처리 흐름에서 벗어나 각 역할을 지닌 객체(Object)들의 상호작용으로 동작.


* 객체 : 데이터 (상태) + 메서드 (행위)




  - 객체란 무엇인가?


* 존재하거나 생각할 수 있는 것을 '객체'(Object) 라고 한다. 무형이나 유형의 개념까지의 모든 존재를 객체라고 볼 수 있다.


* OOP 관점에서 보면 객체는 데이터와 함수를 속성(데이터)과 메서드로 구현한다.



  - 객체 지향 프로그래밍의 4대 특징


* 추상화 


  : 대상의 불필요한 부분을 무시하며, 복잡성을 줄이고 목적에 집중할 수 있도록 단순화 시키는 것 (Design) 수준에서 해당하는 개념)


* 캡슐화 (+ 은닉화) 


  :  추상화가 Design 레벨에 해당하는 개념이라면 캡슐은 Implementation(구현) 수준에서의 개념.


     연관된 상태와 행동을 하나의 단위(객체) 로 캡슐화. --> 데이터 캡슐화 (아래 이어지는 그림에서 확인)


     예를 들면, 우리는 핸드폰을 사용하여 전화를 하고 문자를 보내지만, 그 내부에서는 어떻게 처리하는 지에 대해서는 자세히 알 필요가 없어짐. --> 정보 은닉화


* 상속성


  : 하나의 클래스(추상화된 객체)의 특징을 다른 클래스가 물려받아 그 속성과 기능을 동일하게 사용하는 것.


    Swift 에서는 다중 상속을 비 허용한다.


* 다형성


   : Swift 에서는 Overriding 과 Overloading 과 관련된 개념. 다양한 형태로 나타낼 수 있는 능력. 


    또는 동일한 요청에 대해 각각 다른 방식으로 응답할 수 있도록 만드는 것.


   <  Overriding vs Overloading >


   [ Overriding ]


   1. 상위 클래스에서 상속 받은 메서드를 하위 클래스에서 필요에 따라 재정의하는 것.


   2. 동일 요청이 객체에 따라 다르게 응답



    [ Overloading ]


    1. 동일한 이름의 메서드가 매개 변수의 이름, 타입, 개수 등의 차이에 따라 다르게 동작하는 것.         # Swift - Function(함수) 참고.


    2. 동일 요청이 매개 변수에 따라 다르게 응답하는 것이 가능해진다.




2) Swift 에서의 OOP의 핵심 : '클래스(Class)'





  - Class vs Object



[ Class ]


 1. 추상, 표현 대상에 대한 이데아(형상)


 2. 이상적인 존재 (이미지, 설계도, 틀 설명서)


 3. 공통적인 특징의 집합


 [ Object ]


 1. 실체(Instance), 추상(Class)을 실체화한 대상


 2. 개별 속성






 - 이러한 차이를 조금 더 쉽게 이해하기 위한 사진.






* 왼쪽(Base Class)


1. 강아지의 속성(Properties)과 행위(Methods)로 나누어 공통적인 내용을 도출.


2. 속성에는 강아지 털 색, 눈의 색상, 키, 길이, 무게 가 있을 수 있다.


3. 행위에는 앉기, 짖기, 악수 등이 있을 수 있다.


4. 그러나 이것이 구체화된 무엇은 아니다.


* 오른쪽(Object)


1. 왼쪽을 바탕으로 구체적인 속성과 행위를 부여.


2. 속성에 각각 값을 지정하고, 행위를 지정하여 구체화하였다.


3. 추상화된 무언가가 아닌 이제 구체화된 무엇(Instance)이 되었다.







지금까지 객체 지향 프로그래밍(OOP)에 대해서 알아보았습니다. 틀린 부분이 있으면 댓글로 지적해주시면 감사드리겠습니다.


Made by Inswag's basic programming theory in FastCampus 7th iOS Development School

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함