반응형

Languages 80

[자바 중급 개념] 03. 인터페이스와 추상 클래스

카드 정렬 Collections 클래스와 Comparable 인터페이스를 이용해 Card 리스트를 작은 순서로 정렬해봅시다. 룰은 다음과 같습니다: 슈트(suitNumber)가 높은 카드가 '더 크다'. 수트가 같은 경우, 랭크(rankNumber)가 더 높은 카드가 '더 크다'. package Ex0309; public class Card implements Comparable { public final int suitNumber; public final int rankNumber; public Card(int suitNumber, int rankNumber) { this.suitNumber = suitNumber; this.rankNumber = rankNumber; } public String ge..

Languages/Java 2021.03.09

[자바 중급 개념] 03. 인터페이스와 추상 클래스

그림판 어플 Circle, Square, Rectangle 등 몇 가지 도형 클래스를 만들었고, 각 클래스는 추상 클래스 AbstractShape의 자식입니다. 이 중 Square와 Rectangle은 콘솔에 출력도 가능하게 만들고 싶습니다. 예를 들어서 가로 길이가 4이고 세로 길이가 3인 Rectangle 인스턴스는 아래와 같은 모양을 출력합니다. 출력 기능 계약서인 Printable 인터페이스를 작성합시다. 쉽게 말해서, implements Printable을 하는 클래스는 콘솔에 모양을 그려주는 print 메소드를 꼭 구현해야 합니다. package Ex0307; public interface Printable { void print(); } package Ex0307; public class R..

Languages/Java 2021.03.09

[자바 중급 개념] 03. 인터페이스와 추상 클래스

동물 공원 일단은 아이들이 가장 좋아하는 '고양이', '개', '돼지' 클래스를 만들텐데요. 공통적인 요소들을 모아주는 부모 클래스 AbstractAnimal을 먼저 작성하도록 하겠습니다. AbstractAnimal 클래스에는 동물의 울음 소리를 출력하는 cry 메소드가 있는데, 동물마다 다르게 울기 때문에 추상 메소드로 선언해야 합니다. 따라서 AbstractAnimal은 일반 클래스가 아닌 추상 클래스이어야겠죠? AbstractAnimal 추상 클래스 name 변수 동물의 이름을 담는 String 변수입니다. public final으로 설정해주세요. 생성자 생성자는 파라미터로 이름을 받고 name 변수에 지정해줍니다. cry 메소드 동물의 울음 소리를 출력하는 추상 메소드입니다. 리턴타입은 void로..

Languages/Java 2021.03.09

[자바 중급 개념] 02. 캐스팅과 제네릭

블랙잭 pt. 3 'Generic'을 사용해서 Deck 클래스와 BlackjackHand 클래스를 고쳐봅시다. Deck 클래스 BlackjackCard를 Deck 또는 BlackjackHand에 넣고 꺼내 쓸 때는 캐스팅이 필요합니다. 왜냐하면 Deck 클래스의 cards 리스트가 Card의 인스턴스를 담기 때문이죠. Generic 클래스로 바꾸기 유연성과 확장성을 위해 Deck을 generic 클래스로 바꿔주겠습니다. cards 리스트가 Card를 상속받는 클래스의 인스턴스를 담을 수 있도록 바꿔주세요. 강의에서 본 것처럼 'generic' 개념을 이용하면 캐스팅 없이 카드를 꺼낼 수 있겠죠? BlackjackHand 클래스 Deck가 Generic 클래스로 변경되었기 때문에 자식 클래스인 Blackj..

Languages/Java 2021.03.09

[자바 중급 개념] 02. 캐스팅과 제네릭

블랙잭 pt. 2 기본 룰 블랙잭의 아주 간략화된 룰을 설명하겠습니다. 딜러와 플레이어가 카드를 두 장씩 받습니다. 처음 받은 두 장의 합이 21이면 '블랙잭'입니다. 자동으로 승리합니다. 딜러와 플레이어 중 핸드 가치(카드 가치의 합)가 더 높은 사람이 이깁니다. 하지만 핸드 가치가 21이 넘어가면 패배합니다. 카드를 더 받을 수 있습니다. Ace는 일반적으로 11의 가치를 갖지만, 핸드 가치(카드 가치의 합)가 21이 넘어간 경우 1의 가치를 갖습니다. BlackJackHand '카드 셔플러' 과제에서 만들었던 Deck를 상속받아, 카드를 쥘 BlackjackHand 클래스를 구현해봅시다. 캐스팅 BlackjackHand를 구현하는데 주의해야 할 것이 있습니다. Deck 클래스에서 선언된 ArrayL..

Languages/Java 2021.03.08

[자바 중급 개념] 01. 상속

블랙잭 pt. 1 BlackjackCard 클래스 블랙잭에서는 카드의 가치를 계산하는 방식이 조금 다릅니다. Ace의 경우 1 또는 11의 가치를 갖습니다. Jack, Queen, King의 경우 모두 10의 가치를 갖습니다. Ace, Jack, Queen, King을 제외한 (숫자를 가진) 카드들은 모두 자기 자신의 숫자만큼의 가치를 갖습니다. 예를 들어서 '5' 카드의 가치는 5입니다. BlackjackCard는 Card를 상속받고, 위와 같이 일반 Card와 다른 점을 구현해주면 좋겠죠? public int getValue() 블랙잭 카드의 가치를 'value'라 칭하고 getValue 메소드를 통해서 가져올 수 있도록 하겠습니다. 참고로 Ace는 11을 리턴합니다. Ace가 1의 가치를 갖는 경우..

Languages/Java 2021.03.05

[자바 중급 개념] 01. 상속

카드 셔플러 Card 클래스 (1) public final int suitNumber 카드의 모양을 뜻합니다. 카드 모양에는 정수 1, 2, 3, 4로 표현되는 '클로버(Clubs)', '하트(Hearts)', '다이아몬드(Diamonds)', '스페이드(Spades)'가 있습니다. 한 번 정해지면 바뀔 이유가 없기 때문에 final입니다. 또한 특별히 getter가 필요 없기 때문에 public 입니다. (2) public final int rankNumber 카드의 값을 뜻합니다. 1, 11, 12, 13은 각각 'Ace', 'Jack', 'Queen', 'King'로 표현되고, 2~10은 그 숫자 자체로 표현됩니다. 마찬가지로 한 번 정해지면 바뀔 이유가 없기 때문에 public final입니다. ..

Languages/Java 2021.03.05

[자바 객체 지향 프로그래밍] 06. 기말고사: 자바 실무 프로젝트

학점 계산기 학점 계산 방법 학점 예상에 필요한 자료 이와 같습니다: 이전 학기까지의 평균 점수 (4.5 만점) 이전 학기까지의 이수 크레딧 수 (전공 과목(CREDIT_MAJOR)은 3학점, 교양 과목(CREDIT_GENERAL)은 2학점) 이번 학기 과목별 예상 성적 이번 학기 점수 계산 방법 이번 학기의 평균 점수는 57.5 / 14의 결과값인 4.1071428571입니다. 전체 점수 예상 위의 계산법을 응용합니다. 이전 학기까지의 평균 점수 * 이전 학기까지의 크레딧 수를 하면 이전 학기까지의 총 점수를 구할 수 있겠죠? 예를 들어서 이전 학기까지의 평균 점수가 4.0이고 이수 크레딧 수가 100이라고 가정합시다. 그러면 총 점수는 400이죠? 위의 표에 나와있는대로 이번 학기 성적을 받았다면 이..

Languages/Java 2021.03.04

[자바 객체 지향 프로그래밍] 06. 기말고사: 자바 실무 프로젝트

영화관 '코드박스' 예약 시스템 pt. 2 Theater 클래스 (1) public boolean reserve(String name, char rowChar, int col, int numSeat) 예약 정보(이름, 열, 행, 예약 좌석 수)를 파라미터로 받아 예약하는 메소드입니다. 존재하지 않는 행 또는 열을 입력하면 false를 리턴하고 메소드를 종료합니다. 만약 1열부터 9열까지밖에 없는데, D7부터 네 좌석을 예약하면 false를 리턴하고 메소드를 종료합니다. 아무 좌석도 예약되면 안 됩니다! D3부터 네 좌석(D3, D4, D5, D6)을 예약 하려고 하는데 D6가 이미 예약된 자리라면, 나머지 좌석들(D3, D4, D5)도 예약되면 안 됩니다. 문제가 없는 경우, 실제로 예약을 하고 true..

Languages/Java 2021.03.04
반응형
LIST