Programming 5

[Programming Study] SOLID

컴퓨터 프로그래밍에서 SOLID란 객체 지향 프로그래밍 및 설계의 다섯 가지 기본 원칙이다. 객체 지향에 대해서 모두가 알겠지만 객체 지향은 "누가 어떤 일을 할 것인가?" 가 핵심이다. 각자의 객체를 찾아내고 그것에 대한 역할을 정의하고 사용하는 것이 객체 지향 프로그래밍이라고 할 수 있다. 객체(object)? 객체는 속성(데이터), 동작(메서드)을 가진 것을 이야기 한다. 보통 클래스를 이야기하며, 예를 들면 '사람' 이라는 클래스는 '눈', '코', '입', '팔', '다리' 와 같은 속성이 있는 것이고, '걷기', '먹기', '말하기' 같은 동작을 가진 객체라고 볼 수 있다. SOLID 이제 본격적으로 SOLID에 대해서 공부해보자. SOLID는 SRP, OCP, LSP, ISP, DIP의 약자..

[Programming Study] 캡슐화에 대해서

캡슐화란? 캡슐화(Encapsulation)는 정말 중요하고 기본적인 개념 중 하나이다. 캡슐화란 데이터와 그 데이터의 메커니즘, 방법을 묶는 것을 이야기한다. 데이터와 코드가 보호되고, 캡슐화된 다양한 것들을 편하게 쓸 수 있게 된다. 정말 대표적인 예로는 버튼을 들 수 있을 것 같다. 캡슐화의 장점은 아래 세 가지가 있다. 보호와 안정성: 캡슐화된 데이터와 코드는 외부에서의 접근을 제한하여, 부적절한 변경이나 오용을 방지하고 데이터의 안정성을 유지할 수 있다. 응집성: 관련된 데이터와 코드가 함께 묶여 있어 코드의 응집성이 향상된다. 관련된 코드를 한 곳에 모아두므로 코드를 이해하고 유지보수하기 쉬워진다. 코드의 재사용성: 캡슐화된 단위는 재사용성이 높아진다. 다른 부분에서 해당 단위를 쉽게 가져와서..

[Programming Study] 추상화에 대해서

개발에서 추상화라는 단어를 자주 보게 된다. 추상화에 대한 내 생각과 공부내용을 정리해 보려 한다. 내가 생각한 추상화는 "단순하게", "편하게" 이다. 추상이란 구체적이고 세부적인 사항을 배제하고 중요한 개념에 집중하는 것을 말한다. 피카소의 그림이 정말 알맞는 예인 것 같다. 복잡한 멍멍이를 선하나로 나타내버렸다. 하지만 모두가 이것은 멍멍이를 그린 것이라는 걸 안다. 물론 프로그래밍과 그림에서 말하는 추상화는 정말 같지 않겠지만... 복잡한 것을 단순하고 편하게 그 본질을 표현할 수 있어야 한다. 그것이 모두가 가지고 있는 공통적인 것이 될 수 있고, 모두가 꼭 가지고 있어야 할 요소일 수도 있다. 실제로 내가 쓰고 있는 SwiftUI 도 추상화가 잘 되어있는 것 같다는 생각을 했다. 버튼을 넣으려..

[Programming Study] 싱글톤 패턴(Singleton pattern)

싱글톤 패턴의 의문 시작 아래와 같이 앱에 햅틱을 사용하다가 의문이 생겼다. class Haptic { static let instance = Haptic() func notification(type: UINotificationFeedbackGenerator.FeedbackType) { let generator = UINotificationFeedbackGenerator() generator.notificationOccurred(type) } func impact(style: UIImpactFeedbackGenerator.FeedbackStyle) { let generator = UIImpactFeedbackGenerator(style: style) generator.impactOccurred() } }..

[Programming Study] MVVM 구성 패턴

MVVM (Model-View-ViewModel) 로 이루어진 Architectural pattern (설계, 구성 패턴) 에 대해서 알아보겠다. 주로 위키피디아, 마이크로소프트 문서를 참고하였다. Model-View-ViewModel Overview of the Model-View-ViewModel pattern used by .NET MAUI learn.microsoft.com Model–view–viewmodel - Wikipedia From Wikipedia, the free encyclopedia Software architecture design pattern Model–view–viewmodel (MVVM) is an architectural pattern in computer softwar..