728x90 다형성4 2부(3, 4, 5, 6장). 벽돌부터 시작하기: 프로그래밍 패러다임 3장 패러다임 개요 구조적 프로그래밍 무분별한 점프(goto 문)이 해롭다는 사실과 함께 재안된 최초의 패러다임이다. 무분별한 점프 대신 조건문과 반복문을 상요한다. 구조적 프로그래밍은 다음과 같이 요약할 수 있다. 구조적 프로그래밍은 제어흐름의 직접적인 전환에 대해 규칙을 부과한다. 객체 지향 프로그래밍 함수 호출 스택 프레임을 힙으로 옮기면, 함수 호출이 반환되어도 함수에서 선언된 지역 변수가 오랫동한 유지된다. 이런 함수가 클래스의 생성자가 되었고, 지역변수가 인스턴스, 중첩 함수가 메서드가 되었다. 함수 포인터를 특정 규칙에 따라 사용하는 과정은 다형성이 되었다. 객체 지향 프로그래밍은 다음과 같이 요약할 수 있다. 객체 지향 프로그래밍은 제어흐름의 간접적인 전환에 대해 규칙을 부과한다. 함수형 .. 2022. 5. 15. Chapter 5. 책임 할당하기 데이터 중심 설계는 객체들 간의 협력을 고려하기 보다는 상태를 우선적으로 고려하기 때문에 제대로된 캡슐화를 하지 못한다. 이는 결국 높은 결합도를 야기하고 코드 변경이 어려워진다. 따라서 객체지향 설계에서는 책임 중심 설계가 적절하다. 책임 중심 설계에서 가장 어려운 부분은 어떤 객체에게 어떤 책임을 할당할 것인가 이다. 책임 할당 과정은 일종의 트레이드오프이다. 동일한 문제를 해결할 수 있는 다양한 책임 할당 방법이 존재하며 상황에 따라 최적의 책임 할당 방식이 다르다. 따라서 최적의 책임 할당을 위해서 다양한 관점에서 설계를 평가할 수 있어야 한다. GRASP 패턴은 책임 할당의 어려움을 해결해 준다. GRASP 패턴을 이해하면 응집도, 결합도, 캡슐화 같은 다양한 기준에 따라 책임을 할당하고 결과를.. 2022. 1. 17. Chapter 2. 객체지향 프로그래밍 영화 예매 시스템 예제 영화 예매 시스템을 사용해 사용자는 영화를 예매할 수 있다. 예제에 들어가기 전 용어에 대해 설명하겠다. 영화는 영화 자체에 대한 제목, 상영시간, 가격 같은 영화 하나가 가지고 있는 기본적인 정보이다. 상영은 실제로 관객들이 관람하는 사건이다. 상영은 상영일자, 시간, 순번등을 가지고 있다. 이 용어의 구분이 중요한 이유는 사용자가 실제로 예매하는 대상은 영화가 아니라 상영이기 때문이다. 사람들은 영화를 예매한다고 표현하지만 실제로는 특정 시간에 상영되는 영화를 관람할 수 있는 권리를 구매하는 거다. 특정 조건을 만족하는 예매자는 요금을 할인 받을 수 있다. 할인을 받지 않는다면 영화의 기본 요금이 책정된다. 할인은 1명을 기준으로 하기 때문에 n명이 할인 조건에 만족하는 상영을.. 2022. 1. 3. 객체지향의 주요 개념과 특징 객체 -식별자 존재: 객체를 유일하게 구별 -상태 존재: 자료구조에 해당 -메서드 존재: 연산을 수행할 수 있는 행위에 해당 -클래스로 선언 및 사용: 객체들 사이의 공통의 구조와 행위가 클래스로 선언되 사용 클래스 -클래스는 공통되는 것들을 묶어서 대표적인 이름을 붙인것 -클래스가 개념적이라면, 객체는 구체적이다 -데이터뿐 아니라 이 데이터에서 수행되는 메서드까지 포함해 묶은것 구조체 -서로 연관된 자료들만 모아 놓은것 -구성: -struct: 구조체를 나타내는 예약어 -student: 구조체 태그명 -구조체 멤버 인스턴스 -같은 클래스에 속하는 개개의 객체로, 하나의 클래스에서 생성된 객체 -클래스가 구체화되어, 클래스에서 정의된 속성과 성질을 가진 실제적인 객체로 표현되는 것 -인스턴스화: 추상.. 2021. 5. 10. 이전 1 다음 728x90