본문 바로가기

분류 전체보기

객체지향의 사실과 오해 스터디 7장 발표 자료 목차 07 함께 모으기 커피 전문점 도메인 커피 주문 커피 전문점이라는 세상 설계하고 구현하기 커피를 주문하기 위한 협력 찾기 인터페이스 정리하기 구현하기 코드의 세 가지 관점 코드는 세 가지 관점을 모두 제공해야 한다 도메인 개념을 참조하는 이유 인터페이스와 구현을 분리하라 추상화 기법 07 함께 모으기 서문 객체지향에는 개념, 명세, 구현의 세 가지 관점이 있다. 각 관점은 클래스를 바라보는 방식에 관한 것이며, 개발 순서에 따른 것이 아니다. 클래스는 아래의 세 가지 관점을 모두 수용하고, 명확하게 분리할 수 있어야 한다. 개념 관점은 도메인 내부의 각 개념들 간 관계에 관한 것이다. 도메인은 사용자들이 관심을 가지는 특정 분야나 주제를 뜻한다. 소프트웨어의 목적은 현실 도메인에 존재하는 문제를 해.. 더보기
클래스 다이어그램(Class Diagram) 모델링 UML의 개념 UML(Unified Modeling Language)은 표준화된 모델링 언어로서, 주로 소프트웨어 시스템의 구조와 행동을 시각화, 문서화하는 데 이용되는 도구이다. 클래스 다이어그램은 일반적으로 Use Case 모델링과 Domain 모델링 이후에 모델링한다. 특히 Use Case 모델링 단계가 정말 중요하다고 생각하는데, 구현 기능이 고객의 요구사항과 동떨어져 산으로 가는 것을 방지하는 이정표 역할을 해줄 수 있고, Test Case의 기반 시나리오도 되어줄 수 있기 때문이다. UML 모델링 없이 프로젝트를 진행했었는데, 특히 Use Case 모델링을 하지 않고 그때그때 생각나는 대로 만들다 보니 기본적으로 제공되어야 할 기능이 너무 늦게 만들어지는 일도 있었다. 따라서 앞으로 진행할 프.. 더보기
개발자로서 독점시장 후발주자의 소프트웨어 경쟁력 제고 방법 시장 경쟁이 야기한 격투기 대결 최근 일론 머스크가 마크 저커버그에게 격투기 대결을 신청해서 화제가 된 일이 있었다. 흐지부지 되었는지 진행 중인지는 잘 모르겠지만, 세간에서는 이를 두고 화성인과 렙틸리언의 결투라며 희화화하기도 했다. 해당 사건의 발단은 마크 저커버그의 메타가 일론 머스크가 소유하는 소셜 미디어(Social media)인 트위터(Twitter)의 대항마 스레드(Threads)의 출시를 예고하면서 촉발되었다. 일론 머스크는 트위터를 인수한 후, 트위터의 소스코드(Ruby on Rails 등 여러 언어를 기반으로 개발되었다)를 깃허브에 공개하는 등의 파격적인 기행을 벌여 왔고, 트위터의 실력 있는 시니어 개발자들을 해고하는 등 인사 관련 논란이 되는 행보도 여러 번 있었다. 일론 머스크가 .. 더보기
백엔드 개발자에게 자료구조와 알고리즘 학습이 필요한 이유 백엔드 개발자가 왜 자료구조와 알고리즘을 공부해야 하는지에 대해 정리해 보았다. 자료구조 자료구조(Data structure)는 데이터를 효율적으로 저장, 관리하고 처리하기 위한 구조로서, 개발자의 자료구조에 대한 이해도와 선택에 따라 소프트웨어의 성능과 리소스 사용량에 많은 영향을 미치게 된다. 성능 최적화 필요한 데이터를 빠짐없이 다루기만 하면 문제가 없을 것 같지만, 데이터를 저장하고 접근하는 방법은 실제로 애플리케이션의 성능에 큰 영향을 미친다. 따라서 적절한 자료구조를 선택하는지의 여부가 성능 향상에 크게 기여할 수 있다. 예를 들어, 배열과 Linked List는 동일한 데이터를 저장할 수 있지만 둘의 CRUD 연산은 서로 다른 성능을 보인다. 자료구조를 심도 있게 학습한 개발자는 각 자료구조.. 더보기
Java에서 char 타입의 활용 char 타입의 개념 Java에서 char 타입은 Primitive type으로서, 0~65535의 정수값을 통해 16비트(2^16 = 65536)의 유니코드(Unicode) 문자를 표현한다. char 타입은 Object type인 Character 타입의 unboxed 형태이므로, Chararter 타입에 비해 활용처는 부족하지만 처리 속도가 빠르다. Primitive type과 Object type의 차이에 대한 설명은 이전 글에서 다뤘다(https://hellmir.tistory.com/entry/프로그래밍에서-자료형Data-type이-필요한-이유in-Java). 프로그래밍에서 자료형(Data type)이 필요한 이유(in Java) 자료형(Data type)은 데이터를 분류하는 방법이다. 자료형을.. 더보기
프로그래밍에서 자료형(Data type)이 필요한 이유(in Java) 자료형(Data type)은 데이터를 분류하는 방법이다. 자료형을 통해 해당 자료의 처리되는 데이터 종류, 메모리 할당 과정, 연산 수행 방법을 인지할 수 있다. 예를 들어, Primitive type(기본형)인 int(정수) 타입은 언뜻 보면 불필요해 보인다. double(실수) 타입이 int 타입보다 더 넓은 범위의 값을 담을 수 있기 때문이다. 하지만 동일한 수치를 가지는 데이터도 자료형마다 컴퓨터의 이해, 처리하는 방식이 다르기 때문에 서로 다른 자료형으로 구분되어야 한다. Python과 JavaScript의 경우 동적 타입 언어(Java는 정적 타입 언어)로서, 코드 실행 시 Interpreter 또는 Compiler가 타입 추론(Type Inference)을 통해 타입을 자동으로 추론하고 결정.. 더보기
객체지향의 사실과 오해 스터디 5장 발표 자료 목차 05 책임과 메시지 자율적인 책임 설계의 품질을 좌우하는 책임 자신의 의지에 따라 증언할 수 있는 자유 너무 추상적인 책임 ‘어떻게’가 아니라 ‘무엇’을 책임을 자극하는 메시지 메시지와 메서드 메시지 메서드 다형성 유연하고 확장 가능하고 재사용성이 높은 협력의 의미 송신자와 수신자를 약하게 연결하는 메시지 메시지를 따라라 객체지향의 핵심, 메시지 책임-주도 설계 다시 살펴보기 What/Who 사이클 묻지 말고 시켜라 메시지를 믿어라 객체 인터페이스 인터페이스 메시지가 인터페이스를 결정한다 공용 인터페이스 책임, 메시지, 그리고 인터페이스 인터페이스와 구현의 분리 객체 관점에서 생각하는 방법 구현 인터페이스와 구현의 분리 원칙 캡슐화 책임의 자율성이 협력의 품질을 결정한다 05 책임과 메시지 서문 자.. 더보기
앞으로의 공부 계획 상반기를 마무리하면서, 앞으로 새로이 익히거나 보완, 숙련해야 할 내용들에 대해 작성해 보려 한다. 클린 코드 항상 클린한 코드를 작성하기 위해 노력하고 있지만, 평생 공부하고 다듬어야 하는 부분이다. 개발자에게 기본기와 같은 것이기 때문에 길게 강조할 필요도 없다고 생각된다. 보다 가독성 좋고 유지보수가 용이한 코드를 작성하기 위해 부단히 노력할 것이다. Computer Science CS에서 개발자에게 가장 중요하다고 생각되는 분야는 컴퓨터 구조, 운영체제, 네트워크, 데이터베이스, 자료구조, 알고리즘의 6가지이며, 추가로 다이어그램 모델링, 디자인 패턴 등의 소프트웨어 공학 설계 기법도 중요성이 높다고 할 수 있다. 익혀야 할 내용이 적은 편은 아니라, 두루두루 공부하긴 했으나 아직 지식이 깊지 못.. 더보기