본문 바로가기

객체지향의 사실과 오해6

[07][完] 객체지향의 사실과 오해 - 함께 모으기 코드와 모델을 밀접하게 연관시키는 것은 코드에 의미를 부여하고 모델을 적절하게 한다. - 에릭 에반스(Eric Evans)[Evans 2003] 마틴 파울러는 [UML Distilled 2판]에서 객체지향 설계 안에 존재하는 세 가지 상호 연관된 관점에 관해 설명한다. 파울러는 세 가지 관점을 각각 개념 관점, 명세 관점, 구현 관점이라고 부른다. 개념 관점(Conceptual Perspective)에서 설계는 도메인 안에 존재하는 개념과 개념들 사이의 관계를 표현한다. 사용자가 도메인을 바라보는 관점을 반영하여 실제 도메인 규칙과 제역을 최대한 유사하게 반영하는 것이 핵심이다. 명세 관점(Specification Perspective)에 이르면 소프트웨어 안에서 살아 숨쉬는 객체들의 책임에 초점을 맞추.. 2024. 1. 1.
[06] 객체지향의 사실과 오해 - 객체지도 객체지도는 객체지향 프로그래밍에서 사용되는 개념입니다. 객체지향 프로그래밍은 객체들의 상호작용을 중심으로 프로그램을 구성하는 방법론입니다. 객체지도는 이러한 객체들의 관계와 상호작용을 시각적으로 표현한 도구입니다. 객체지도를 사용하면 프로그램의 구조를 쉽게 이해하고 관리할 수 있습니다. 유일하게 변하지 않는 것은 모든 것이 변한다는 사실뿐이다. -헤라클레이토스(Heraclitus of Ephesus) 지도는 길을 찾는 데 필요한 구체적인 기능이 아니라 길을 찾을 수 있는 ‘구조’를 제공한다. 지도는 범용적이다. (새로운 목적까지도 만족시킬 수 있다.) 객체지향은 지도와 같다. 자주 변경되는 기능이 아니라 안정적인 구조를 기반으로 시스템을 구조화한다. 기능 설계 대 구조 설계 모든 소프트웨어 제품의 설계에.. 2023. 12. 31.
[05] 객체지향의 사실과 오해 - 책임과 메시지 NOTION AI 결과 ———————————————————————————————————— 책임과 메시지 소프트웨어 개발에서 책임의 개념은 시스템 내에서 특정 객체나 구성 요소가 가지는 작업과 의무를 말합니다. 각 객체나 구성 요소는 특정한 동작을 수행하거나 특정한 기능을 제공하기 위해 책임을 집니다. 반면에 메시지는 시스템 내의 객체나 구성 요소 사이에 통신하는 데 사용됩니다. 객체는 서로에게 메시지를 보내어 동작을 트리거하거나 정보를 요청합니다. 메시지는 데이터를 전달하거나 메서드를 호출하거나 다른 객체에 이벤트에 대해 알리는 데 사용될 수 있습니다. 명확한 책임을 이해하고 정의하며 효과적인 메시지 전달 메커니즘을 설계하는 것은 견고하고 유지 관리 가능한 소프트웨어 시스템을 구축하기 위해 중요합니다. .. 2023. 12. 30.
[04] 객체지향의 사실과 오해 - 역할,책임, 협력 우리 모두를 합친 것보다 더 현명한 사람은 없다. - 켄 블랜차드 중요한 것은 개별 객체가 아니라 객체들 사이에 이뤄지는 협력이다. 객체지향 설계의 전체적인 품질을 결정하는 것은 개별 객체의 품질이 아니라 여러 객체들이 모여 이뤄내는 협력의 품질이다. 협력 협력은 요청할 때 시작한다. 요청하면 응답한다. 협력은 다수의 연쇄적인 요청과 응답의 흐름으로 구성된다. 책임 객체지향의 세계에서는 어떤 객체가 어떤 요청에 대해 대답해 줄 수 있거나, 적절한 행동을 할 의무가 있는 경우 해당 객체가 책임을 가진다고 말한다. 책임의 분류 하는 것과 아는 것으로 나뉜다. 역할 협력 안에서 역할은 “이 자리는 해당 역할을 수행할 수 있는 어떤 객체라도 대신할 수 있다.” 역할은 객체지향 설계의 단순성(simplicity).. 2023. 12. 29.
[03] 객체지향의 사실과 오해 - 타입과 추상화 NOTION AI 타입과 추상화는 프로그래밍에서 중요한 개념입니다. 타입은 데이터의 종류를 정의하고 제한하는데 사용됩니다. 추상화는 복잡한 개념이나 데이터를 단순화하고 일반화하는 과정을 의미합니다. 이러한 개념을 이해하면 프로그래밍에서 더 효율적이고 유지보수가 쉬운 코드를 작성할 수 있습니다. 타입은 변수, 상수, 함수 등에 적용됩니다. 각각의 타입은 특정한 속성과 동작을 가지며, 이를 토대로 프로그래밍 언어는 타입 검사와 타입 추론을 수행합니다. 타입은 컴파일 시간에 오류를 방지하고 코드의 안정성을 높이는 역할을 합니다. 추상화는 개념이나 데이터를 단순화하여 복잡성을 줄이는 과정입니다. 이를 통해 코드의 가독성을 높이고 개발자가 코드를 이해하고 관리하기 쉽게 만듭니다. 추상화는 객체 지향 프로그래밍에서.. 2023. 12. 28.
[02] 객체지향의 사실과 오해 - 이상한 나라의 객체 객체지향 패러다임은 지식을 추상화하고 추상화한 지식을 객체 안에 캡슐화함으로써 실세계 문제에 내재된 복잡성을 관리하려고 한다. 객체를 발견하고 창조하는 것은 지식과 행동을 구조화하는 문제다. -레베카 워프스브록(Rebecca Wirfs-Borck)[Wirts-Brock 1990] 객체의 다양한 특성을 효과적으로 설명하기 위해서는 객체는 상태(state), 행동(behavior), 식별자(identity)를 지닌 실체로 보는 것이 가장 효과적이다. 상태 이상한 나라의 엘리스에서 엘리스는 작은 문을 통과하기 위해 특정 행동을 통해서 몸의 키를 늘리거나 줄인다. 부채질을 하면 키가 20cm 작아지고, 차를 마시면 30cm 커지는 등의 상태 변경이 일어난다. 엘리스의 키를 추정하기 위해서는 이러한 행동의 순서를.. 2023. 12. 27.