객체지향 5원칙시간이 지나도 변경이 용이하고 유지보수와 확장이 쉬운 소프트웨어 개발 가능복잡성을 제거해 개발의 생산성을 높일 수 있음5개 모두 반드시 적용해야 할 필요는 없으며 특정 문제를 해결하기 위한 지침1) 단일 책임 원칙 (Single Responsibility Principle)하나의 클래스는 하나의 기능(책임)만 가져야 한다.즉, 하나의 기능에 대해서만 책임을 져야 한다.하나의 클래스에서 여러 개의 기능이 있다면 수정 사항이 발생했을 때, 수정해야 하는 부분이 많아진다. 하지만 하나의 클래스에서 하나의 기능만 있다면 수정해야 할 부분이 적어져 유지보수에 도움이 된다.높은 응집도와 낮은 결합도 2) 개방 폐쇄 원칙 (Open Closed Principle)확장에는 열려 있고(open) 수정에는 ..
1. 객체지향 프로그래밍소프트웨어를 개발할 때, 부품에 해당하는 객체를 먼저 만들고 이 객체를 조립해서 프로그램을 만드는 기법예를 들어, 핸드폰을 만들 때 부품(객체)들을 조립해서 만다는 것과 비슷하다. 2. 객체(object)우리가 보고 느끼고 인지하는 모든 것들물리적으로 존재하거나 개념적인 것 중에 다른 것과 식별 가능한 것들예를 들어, 자동차, 책, 사람 등 모두 객체가 될 수 있음 객체는 속성(변수)과 동작(메소드)로 구성되어 있다. 3. 장점프로그램을 보다 변경하기 쉽게 만들 수 있음코드의 변경을 최소화해서 유지보수에 유리코드의 재사용을 통해 반복적인 코드를 최소화하고 간결하게 표현 가능 특징1) 추상화 (Abstration)Abstration: 복잡한 자료, 모듈, 시스템 등으로부터 핵심적인..
구조체 와 클래스공통점프로퍼티 정의 : 속성 정의메서드 정의 : 기능을 정의초기화 정의extension 가능프로토콜 준수차이점구조체 = 값 타입 (복사) vs 클래스 = 참조 타입 (메모리 주소 전달)구조체 = 상속 불가 vs 클래스 = 단일 상속 가능 (다중 상속 불가)구조체 = init 자동 생성 vs 클래스 = init 사용자 정의 필요값 타입 예시struct Coffee { let name: String var shot: Int}var coffeeInfo: Coffee = Coffee(name: "americano", shot: 2)var coffeeInfo2 = coffeeInfocoffeeInfo2.shot = 4// 출력 : 주문 1은 2 샷print("주문1 은 \(coffeeI..