분류 전체보기
-
[OOP] 디자인 패턴 - Decorator Pattern(데코레이터 패턴)프로그래밍 2024. 7. 17. 21:52
## 데코레이터 패턴(Decorator Pattern).객체에 추가적인 요건을 동적으로 첨가한다. 데코레이터는 서브클래스를 만드는 것을 통해서 기능을 유연하게 확장할 수 있는 방법을 제공한다. ## 커피 클래스를 구현해보자 - (1)우리가 수 많은 커피를 클래스로 구현한다고 했을때, 일반적으로 아래와 같은 구조를 생각하기 쉽다.나 또한 가장 먼저 이런 생각이 떠올랐었고,회사에 다니는 젊은 개발자들에게 물어봤을때도 위와 같은 구조를 우선적으로 많이 말씀하셨다. 하지만 조금만 더 고민해보면 이런 구조는 문제가 있는걸 알 수 있다. 커피는 너~무 많다.수십, 수백가지 되는 커피들이 있고,커피콩은 어떤것을 쓸 것이고두유를 첨가할 지 우유를 첨가할 지,샷은 얼마나 추가할 것인지,휘핑크림 넣고 빼고,이런것들을 고..
-
[OOP] 디자인 패턴 - Strategy Pattern(전략 패턴)프로그래밍 2024. 7. 16. 21:48
## 전략 패턴(Strategy Pattern).알고리즘군을 정의하고 각각을 캡슐화하여 교환해서 사용할 수 있도록 만든다. ## 오리 클래스를 구현해보자오리를 프로그래밍으로 구현한다고 했을 때, 아래와 같은 구현을 많이 생각할 것이다. 나도 누군가가 갑작스레 오리 클래스를 구현해봐~ 라고 물었을때위와 같은 구조를 생각할 것 같은데이런 구조에는 어떤 문제점이 있을까? ### 문제점 1 - 서브클래스 코드 중복만약, 위의 RubberDuck처럼 실제로 날지 못하는 오리(NowWingsDuck)가 추가된다고 하자.해당 오리는 fly() 부분을 날지 못하게 하도록 따로 코드를 구현해야 할 것이고, 이것은 RubberDuck의 코드와 차이가 없는 중복코드 일 것이다. ### 문제점 2 - 코드 변경시 다른 오..
-
[OOP] Law of Demeter: 최소 지식 원칙프로그래밍 2024. 7. 11. 19:04
최소 지식 원칙, 소프트웨어 개발을 위한 가이드라인 중 하나이며, 특히 느슨한 결함(loose coupling)을 위한 방법 중 하나이다. ## 1987년, Ian Holland에 의해 제안되었다.요약해보면,Each unit should have only limited knowledge about other units: only units "closely" related to the current unit.(각 객체는 "밀접하게" 관계된 다른 객체들에 대해서 제한된 지식만 가져야 한다.)Each unit should only talk to its friends; don't talk to strangers.(각 객체는 그 친구와만 대화해야한다; 낯선이와 이야기하지 말아라.)Only talk to your..
-
[PROJECT: The Game King] - 플레이어 점수 합산기를 만들어보자!(3) - [프로토타입 만들기]SIDE PROJECT 2024. 6. 24. 22:55
## 들어가기 전에아래 포스트에서 이어지는 글입니다.해당 내용을 먼저 읽으시면 이해하기 좋습니다. [PROJECT: The Game King] - 플레이어 점수 합산기를 만들어보자!(2) - [기획]## 들어가기 전에아래 포스트에서 이어지는 글입니다.해당 내용을 먼저 읽으시면 이해하기 좋습니다. [PROJECT: The Game King] - 플레이어 점수 합산기를 만들어보자!(1) - [문제인식]## 문제발생여럿thewys.tistory.com ## [PROJECT: The Game King] 프로토타입 만들기이제 핵심 스펙을 정의했으니, 프로토타입을 만들어서 다음 모임때 실제 사용도 해보고, 친구들의 반응도 볼까합니다.간단한 앱일것 같은데,제가 디자인 시안이 없으면 개발 못하는 프론트병에 걸려서...
-
[PROJECT: The Game King] - 플레이어 점수 합산기를 만들어보자!(2) - [기획]SIDE PROJECT 2024. 6. 21. 23:47
## 들어가기 전에아래 포스트에서 이어지는 글입니다.해당 내용을 먼저 읽으시면 이해하기 좋습니다. [PROJECT: The Game King] - 플레이어 점수 합산기를 만들어보자!(1) - [문제인식]## 문제발생여럿이서 다트나 보드게임 등을 하다가 각 사람들의 매 라운드 점수를 합산해야 했던 상황 이런 경험 있으신가요? 친구 넷이서 보드게임 3판을 진행하여점수의 합이 낮은 2명이,thewys.tistory.com ## [PROJECT: The Game King] 기획해보기이 프로젝트에 어떤 기능이 필요할까? 어떤 환경에서 사용할 수 있어야할까? 등의 고민을 해봤습니다.프로젝트를 시작하는 첫걸음이죠. ### 유저 시나리오간단하게 유저 시나리오를 생각해봤어요.유저는 여럿이서 함께 게임을 한다. 게임은..
-
[PROJECT: The Game King] - 플레이어 점수 합산기를 만들어보자!(1) - [문제인식]SIDE PROJECT 2024. 6. 21. 19:41
## 문제발생여럿이서 다트나 보드게임 등을 하다가 각 사람들의 매 라운드 점수를 합산해야 했던 상황 이런 경험 있으신가요? 친구 넷이서 보드게임 3판을 진행하여점수의 합이 낮은 2명이, 높은 2명에게 커피를 사주는 내기를 걸고 게임을 한 적이 있습니다. 여러분들이라면 각 첫번째판, 두번째판, 세번째판의 점수를 어떻게 기록하고 합산하시나요? 저희는 그때, 카톡 단톡방에 각각의 점수를 적고 올렸었습니다!뚜비: 21점튜이: 14점오리: 6점짱구: 0점뚜비: 4점짱구: 11점오리: 7점튜이: 6점튜이 31점뚜비: 18점오리: 22점짱구: 31점 뚜비: 21 + 4 +18 => 43점 -- 2등튜이: 14 + 6 + 31 => 51점 -- 1등오리: 6 + 7 + 22 => 35점 -- 4등짱구: 0 + 11 ..
-
[Flutter] Dart 변수: final, const 선언 살펴보기App 2024. 6. 20. 15:28
Dart의 final과 const 변수는 일반적으로 한번 정의하고 바뀌지 않는 변수를 선언할때 쓰이지만각각의 특징이 있다.미리보기 및 정리 finalconst미리 선언, 후 할당가능불가능인스턴스 변수 선언가능불가능일반 클래스 선언가능불가능클래스 선언 후 멤버변수 수정가능불가능(** 이렇게 써놓으니까 어렵고 많은 차이가 있는 것 같다.) ## final할당된 값을 변경하지 않을때 사용final name = "Thewy";name = "Chewys"; // 불가능선언하고 후에 값을 할당 가능final finalLate;finalLate = 42; // 가능인스턴스 변수는 final로 생성 가능class Class { final x = 15; // 가능}숫자, 문자열 리터럴, 상수 클래스뿐 아니라 일반 ..
-
[Flutter] 디자인 위젯, 쿠퍼티노(Cupertino)와 머티리얼(Material)App 2024. 6. 16. 07:50
iOS, Android, Web, 데스크탑까지 지원하는 Flutter의 입장에서는, 각 플랫폼에 적합한 디자인 위젯의 지원이 필요했을 것이다. ## 쿠퍼티노(Cupertino) 디자인import 'package:flutter/cupertino.dart';미국 캘리포니아 주 산타클라라 카운티의 도시. Apple 본사가 있는 곳 이다. Apple 본사가 있는 쿠퍼티노(cupertino)를 따서, 플러터에서는 iOS 스타일의 UI를 쿠퍼티노 디자인이라고 한다.Apple의 공식 명명은 아닌 듯, 구글 입장에서 `Apple 디자인, iOS 디자인` 하며 경쟁사와 경쟁사 제품을 이야기하는게 좋지 않을테니 구글이 자체적으로 명명한듯 보인다. Apple은 그냥 Human Interface Guideline 정도로 부르..