본문 바로가기

분류 전체보기

(198)
[오브젝트] ch2. 객체지향 프로그래밍 1. 영화 예매 시스템 설명 - 영화와 상영의 의미 영화 : 제목, 상영시간, 가격정보처럼 영화가 가진 기본적인 정보 상영 : 상영일자, 시간, 순번 등 => 사용자가 실제로 예매하는 대상은 영화가 아니라 상영 - 할인 조건이란? 할인조건 순서 조건 상영 순번을 이용해 할인 여부 결정 ex) 조조 할인 -매번 첫번째 상영 기간 조건 - 영화 상영 시작시간을 이용해 할인여부 결정 - 요일, 시작시간, 종료시간 ex) 월요일 오전 10시 -오후 1시 기간 동안 할인 혜택 -할인 정책이란? 할인 정책 설명 금액 할인 일정 금액을 할인하는 정책 ex) 800원 할인 비율 할인 일정 비율을 할인하는 정책 ex) 10% 할인 2. 객체지향 프로그래밍을 향해 1) 어떤 클래스가 필요한지 고민하기 전에 어떤 객체가 필..
[오브젝트] ch1. 객체, 설계 토마스 쿤이 제안한 패러다임이 과학혁명의 구조를 바라보는 시각을 바꾸었듯이 프로그래밍에도 프로그래밍 패러다임이 있다. 프로그래밍 패러다임은 다음을 의미한다. - 우리가 해결할 문제를 바라보는 방식 - 프로그램을 작성하는 방법 => 개발자 공동체가 공유하는 프로그래밍 스타일과 모델 - 프로그래밍 패러다임은 과거의 시각을 폐기하기보다 단점을 보완하는 발전적 행보를 걸어왔다. 1) 티켓 판매 애플리케이션 구현하기 - 티켓 판매 애플리케이션을 구현한다 - 소극장은 관객을 입장시킬 수 있다 - 티켓이 있어야만 입장이 가능하다 - 무료 이벤트 초대장에 당첨된 관객은 티켓 교환 후, 입장이 가능하다 초기 설계 다이어그램 소극장 클래스의 코드 package org.eternity.theater.step01; publi..
[Python] 1082. 방 번호(골3) / 그리디 + DP 목차 1. 문제 2. 핵심 아이디어 3. 코드 4. 배운 점 1. 문제 https://www.acmicpc.net/problem/1082 1082번: 방 번호 첫째 줄에 N이 주아진다. 둘째 줄에는 공백으로 구분된 P0, ..., PN-1이 주어진다. 마지막 줄에는 M이 주어진다. www.acmicpc.net 2. 핵심 아이디어 다른 사람의 풀이를 참고했음에도 사실 이해가 잘 되지 않았다. 어느정도 이해가 되니 문제는 풀렸지만 이런 사고를 어떻게 떠올리는지는 잘 모르겠다 한번 아이디어를 정리해보자 가장 큰 숫자라는 건 어떻게 정할 수 있을까? 아마 그리디한 사고로 높은 숫자부터 고려하는 것을 떠올릴 수 있다. 그러나, 이 문제가 어려운 점은 여기서 그치지 않고 예산이라는 제한이 들어가기 때문이다. 예산,..
자바 리플렉션 사용법과 3가지 단점 우테코 Lv1. 마지막인 체스 미션을 진행하면서 자바 리플렉션을 사용했었다. 초기 체스판 기물 배치를 하는데 있어 비숍, 룩, 나이트 등 각 기물의 클래스 객체를 통해 인스턴스를 생성하는 과정에서 리플렉션을 얄팍하게 접했다. private Piece createPieceInstance(Class
상속과 조합 : is-a / has-a 우테코 블랙잭 미션에서는 다음 요구사안이 있었다. - 플레이어와 딜러의 중복 코드를 없앤다. 이에 플레이어와 딜러를 참여자라는 추상클래스로 묶었다. 그러나, 페어였던 도도의 피드백에서 is-a 관계 대신 has-a관계로도 생각해보라는 피드백이 왔고, is-a/ has-a관계가 무엇인지, 또 왜 이리도 크루들 사이에서 상속에 대한 이야기가 많은 것인지 궁금해졌다. 상속(is-a) is-a 관계는 [a는 일종의 b이다.]가 성립하는 관계를 말한다. ex) 상위 클래스 : 자동차 하위 클래스 :경찰차, 소방차, 버스 경찰차는 일종의 자동차다. 소방차는 일종의 자동차다. 버스는 일종의 자동차다. => 모두 is-a관계가 성립한다. 상속의 장점 - 코드를 재사용함으로써 중복을 줄인다 - 개발시간 단축 - 확장성이..
[스크랩] 풀링 / 캐싱 https://whiny.tistory.com/17 오브젝트 풀링(Object Pooling)이란? 이번 포스팅에서는 다양한 최적화 기법들 중에서 오브젝트 풀링(Object Pooling)에 관해서 알아보겠습니다. 간단하게 오브젝트 풀링을 설명하자면, 오브젝트의 Pool 즉 웅덩이를 만들어두고, 그 웅덩 whiny.tistory.com https://javacan.tistory.com/entry/48 캐시를 이용한 성능 향상! 객체를 캐싱함으로써 객체 생성과 관련된 성능을 향상시킬 수 있다. 캐싱(Caching) 성능을 향상시키기 위해서 많이 사용되는 방법을 말해보라고 하면 대부분 객체 풀링을 말한다. 특히 데이터베이 javacan.tistory.com
[Python] 2538. 전구와 스위치 / 그리디 목차 1. 문제 2. 핵심 아이디어 3. 코드 4. 배운 점 1. 문제 https://www.acmicpc.net/problem/2138 2138번: 전구와 스위치 N개의 스위치와 N개의 전구가 있다. 각각의 전구는 켜져 있는 상태와 꺼져 있는 상태 중 하나의 상태를 가진다. i(1 < i < N)번 스위치를 누르면 i-1, i, i+1의 세 개의 전구의 상태가 바뀐다. 즉, 꺼져 www.acmicpc.net 2. 핵심 아이디어 https://staticvoidlife.tistory.com/143 [그리디 알고리즘] 전구와 스위치 예제 입력 1 3 000 010 예제 출력 1 3 https://www.acmicpc.net/problem/2138 2138번: 전구와 스위치 N개의 스위치와 N개의 전구가 있..
[스터디] 이펙티브 자바 - item4. 인스턴스화를 막으려거든 private 생성자를 사용하라 보호되어 있는 글입니다.