본문 바로가기

분류 전체보기

(224)
[디자인 패턴 스터디] 5. 싱글턴 패턴
[디자인 패턴 스터디] 4. 팩토리 패턴 세계적으로 유명한 피자 프랜차이즈의 피자 주문 시스템을 만든다고 생각해 보자. 가장 간단한 방법으로는 피자를 주문받는 클래스에서 피자의 종류를 확인하고, 그에 따라 피자를 만들고, 피자를 굽고 자르고 포장하는 식으로 코드를 작성하면 된다. 이렇게 만들면 당연히 문제가 있다. 지난번까지 배운 디자인 패턴에 위배가 되는 부분이 있다. 첫 번째로는 피자의 종류를 확인하고 피자를 만드는 과정에서 인터페이스에 맞춘 코딩이 아닌 구현을 이용하였다는 점이다. 두 번째로는 바뀌는 부분에 대해 캡슐화를 하지 않았다. 피자의 종류를 확인하는 과정은 아마도 ```if (type.equals("cheese pizza")```와 같이 조건문을 이용하여 구현할 수 있을 텐데 만약 피자의 종류가 새로 생기거나 삭제되는 일이 일어나..
[주간일기챌린지] 주간일기 7주차 또 학식으로 시작하는 한 주 역시나 박형기의 메뉴 브리핑은 틀렸다. 후식으로 99 99 블루베리 스무디 코로나 때문인지 더 이상 99에 가성비는 찾아볼 수 없다. 다 먹고 학실로 왔다. 콜라 냉장고에서 사이다 뚱캔을 획득했다. 궁동 맛존 닭갈비 1인분 5000원의 가성비 식당이다. 맛존에서 10억 벌기 닭갈비와 떡볶이를 섞은 듯한 닭갈비다. 그래도 맛은 있다. 후식으로는 롯데리아 아이스크림 모자를 획득하고 기념사진을 찍는 유정균 옥수수맛 말랑카우 이거 맛있다. 데이터베이스 텀프로젝트 조잡해보이지만 12시간 정도 걸렸다. 그리고 아직 미완이다. 유정균의 로고가 인상적인 작품이다. 어글리 충남대 어느새 어두워졌다. 12시간의 흔적 오픈북하는 미친 수업때문에 프린트 카페로 왔다. 이딴걸 돈주고 뽑다니 처갓집 ..
[VSCode] 상대경로 인식이 안될 때 작업 중인 파일과 불러올 파일이 같은 디렉토리에 있지만 상대경로가 인식이 안될 때가 있다. 그럴 땐 현재 작업 중인 디렉토리를 확인할 필요가 있다. 상대 경로로 파일을 불러올 때, 부르는 파일이 기준이 아니라 현재 작업 중인 디렉토리로 경로를 인식하는 듯하다. 아래 이미지로 확인해보자. 노란색으로 칠한 부분과 빨간색으로 칠한 부분을 보면, 위 이미지는 Main.java에서 같은 디렉토리(jv)에 존재하는 test.umm과 test.c를 불러오기 위해 "./test.umm", "./test.c"와 같이 작성했다. 하지만 이렇게 작성하면 경로를 인식하지 못한다. 왜냐하면 파란색으로 칠한 부분에서 알 수 있듯이 현재 작업 중인 디렉토리가 SOURCES이기 때문이다. 아마도 test.umm과 test.c를 SO..
[주간일기챌린지] 주간일기 6주차 기운찬 첫 주의 시작 일 수 있었으나 대체공휴일에 수업하는 교수님 날씨도 슬픈가보다. 현충일에도 수업을 들으러 온 유정균의 차 수업을 준비하는 유정균 월평동 토미야 무려 우동 전문점이다. 휴게소가 우동 전문점인 나에겐 충격적인 식당이었다. 웨이팅이 길다는 게 더 충격이었다. 웨이팅 기다리면서 돌아다니기. 정육점이 아니라 안경점이다. 싶빵공장 이름이 특이해서 찍었다. 세상에서 가장 애들이 적은 유치원은? 세명유치원 미안합니다. 메뉴판 메뉴판만 보면 뭐가 뭔지 알 수가 없다. 고춧가루와 향신료를 섞은 조미료 메뉴판에도 이 정도만 설명을 적어줬으면 한다. 텐뿌라 우동 국물에서 나는 가쓰오부시 맛이 일품이다. 역시 우동 전문점 근데 많이 먹으면 물린다. 사이드로 나온 돈까스. 맛있는데 저게 4000원밖에 안한다..
[주간일기챌린지] 주간일기 5주차 알고리즘응용 끝나고 형곤이한테 납치당해서 이디야로 왔다. 달다. 지마트로 장 보러 가는 날. 먼 거리지만 적토마와 함께라면 두렵지 않다. 도착한 지마트 쏘야를 위한 비엔나 소시지 요리글로 돌아오겠다. 충남대 공식 랜드마크 파빌리온 뭔가 했는데 굿즈샵이었다. 계속 공사하더니 결국 완공됐다. 차차 맨투맨 충남대학교 텀블러 (₩35,000) 음... 판단은 각자에게 맡긴다. 차차 그립톡과 키링 여기서 본 것 중에 가장 사고 싶었다. 물론 안 샀다. 차차 과자 불쌍하게도 목이 잘린 친구가 있다. 수업 공지를 보던 중 사이코패스가 생각보다 가까이 있다는 생각이 들었다. 도서관 정문 ASC 활동을 위해 왔다. 도서관은 3년 만에 온 것 같다. 도서관에 책상이 달린 런닝머신이 있었다. 열심히 고민해 봤지만 끝내 무슨..
[디자인 패턴] 3. 데코레이터 패턴 변경되는 부분에 대해 데코레이터를 이용해 재귀적으로 구성 요소 객체를 Decorate한다면, 기존 코드의 변경 없이 동적으로 확장 할 수 있다. 커피 전문점의 주문을 돕는 프로그램을 작성한다고 생각해보자. 만약 음료를 나타내는 수퍼 클래스 하나를 상속받는 여러 음료들의 서브 클래스를 만들어서 주문을 처리하는 것이 과연 적합할까? 직관적으로 생각해봐도 문제가 있다. 음료들은 시럽, 펄 추가 혹은 무지방 우유, 두유로 변경하는 등의 가공을 거칠 수 있다. 상속을 이용한다면 일반적인 카페 라떼를 하나 구현하기 위해 카페 라떼, 무지방 라떼, 두유 라떼, 시럽 추가 라떼, 오트 라떼 등등 굉장히 많은 서브 클래스를 필요로 하는 것을 알 수 있다. 또한 이전까지 배운 객체 지향 원칙에 어긋나는 방식임을 알 수 있..
[디자인 패턴] 1. Intro 수퍼 클래스를 상속받는 서브 클래스들이 있을 때, 변화하는 부분을 단순 상속으로 처리하지 말고 인터페이스로 캡슐화한다. 변화하는 부분은 해당 캡슐에 위임하면 유지보수가 간편해진다. 여러 오리를 구현하는 코드를 작성한다고 해보자. 수퍼 클래스로 오리를 만들고, 서브 클래스는 청둥오리, 집오리, 고무오리, 나무오리 등이 있을 수 있다. 아직까지는 오리의 울음소리와 떠다니는 기능만 구현되어 있고, 모든 서브 클래스는 이를 상속하고 있다. 만약 날아다니는 기능을 추가하고자 한다면 단순히 수퍼 클래스에 fly라는 메서드를 추가하고 서브 클래스가 상속받으면 끝일까? 답은 당연히 아니다. 고무오리와 나무오리는 날 수 없기 때문이다. 상속은 코드의 재사용성을 높일 수 있지만 위처럼 유지보수에는 별로 좋지 않다. 클래스..