객체 지향이란?
프로그램을 어떻게 설계해야하는 지에 대한 방법론 중 하나로 '객체'를 어떤 관계로 설계를 할 것인가를 고민하는 방법론이다.
객체지향(OOP)의 특징
1. 추상화 (Abstraction): 추상화는 객체 지향 프로그래밍의 핵심 개념 중 하나로, 복잡한 시스템을 단순화하여 중요한 부분을 강조하고 불필요한 부분을 숨기는 것을 의미합니다. 클래스나 프로토콜을 통해 데이터와 동작을 추상화하여 필요한 정보만을 노출시키는 것을 포함합니다.
👉 그러나 swift에서는 추상화를 공식적으로 지원하지는 않고 있다. 다른 언어의 경우 abstract나 implement를 사용하여 구현체는 추상화 class의 함수를 강제적으로 구현 해야하는 함수를 제공하지만 swift는 그러한 방법은 존재하지 않다.
👉 다만 비슷하게 구현을 진행할 수는 있다. class의 경우 A함수 안에 error를 발생시키고 A를 상속받는 class에서 A를 override해서 만들어서 사용하면 추상클래스 처럼 사용은 가능하다.
2.캡슐화 (Encapsulation): 캡슐화는 객체의 상태(데이터)와 행동(메서드)를 하나로 묶고, 외부에서의 접근을 제한하여 객체 내부의 세부 구현을 숨기는 것을 의미합니다. 이를 통해 객체 간의 의존성을 줄이고 코드를 보호하며 유지보수성을 높일 수 있습니다.
👉 캡슐화의 시작은 기본적으로 코드를 짜면서 함수에 clean code에 나와있는 원칙을 지켜야 한다고 생각한다.
특히 한 함수에 하나의 기능을 넣어야한다는 원칙을 지키면서 접근제어자가 어울러 캡슐화가 되는것 같다.
3.상속 (Inheritance): 상속은 기존 클래스에서 정의된 속성과 메서드를 다른 클래스에서 재사용하는 것을 말합니다. 부모 클래스(상위 클래스, 슈퍼 클래스)의 특성을 자식 클래스(하위 클래스, 서브 클래스)가 물려받아 사용할 수 있습니다.
👉 상속의 경우 다른 언어와 거의 비슷한다. 특히 override를 이용하여 소스의 재사용성을 올리는 부분이 비슷하다 느꼈다.
4.다형성 (Polymorphism): 다형성은 객체 지향 프로그래밍의 특징 중 하나로, 동일한 인터페이스를 가진 다른 클래스들이 각각의 방식으로 동작할 수 있는 능력을 말합니다. 다형성은 오버라이딩과 연관되어 있으며, 서로 다른 클래스들이 동일한 메서드를 호출할 때 각 클래스의 오버라이딩된 메서드가 실행됩니다.
- 오버라이딩 (Overriding): 오버라이딩은 상속 관계에서 부모 클래스의 메서드를 자식 클래스에서 재정의하는 것을 말합니다. 자식 클래스에서 부모 클래스의 동일한 메서드 이름을 사용하여 내용을 변경하거나 확장할 수 있습니다.
- 오버로딩 (Overloading): 오버로딩은 동일한 함수나 메서드 이름을 가지지만 매개변수의 타입, 개수, 순서 등이 다른 여러 버전의 함수를 정의하는 것을 말합니다. 이를 통해 동일한 이름의 다양한 버전의 함수를 사용할 수 있습니다.
👉 오버로딩의 경우 공통부분에서 많이 사용하였던 로직이였다. 오버라이딩과 비슷하여 헷갈리지 않도록 주의하자
'Ios > Today' 카테고리의 다른 글
[Today] Ios에서 적용해보는 MVC 패턴에대한 끄적임 (0) | 2024.06.26 |
---|---|
[Today] Combine과 RxSwift의 차이점을 끄적임 (0) | 2024.06.10 |
[Today] codebase? 그런 것에 대한 장단점 (0) | 2024.06.05 |
[내배캠] 목표 설정 (0) | 2024.05.27 |