archive
7장 상속 연습 문제 및 LAB 문제 -2 본문
8. 다음은 키와 값을 하나의 아이템으로 저장하고 검색 수정이 가능한 추상 클래스가 있다.
abstract class PairMap {
protected String KeyArray[]; // key 들을 저장하는 배열
protected String valueArray[]; // value 들을 저장하는 배열
abstract String get(String key); // key 값을 가진 value 리턴, 없으면 null 리턴
abstract void put(String ket, String value); // key와 value를 쌍으로 저장. 기존에 key가 있으면, 값을 value로 수정
abstract String delete(String key); // key 값을 가진 아이템 (value와 함꼐) 삭제, 삭제된 value 값 리턴
abstract int length(); // 현재 저장된 아이템의 개수 리턴
}
PairMap을 상속받는 Dictionary 클래스를 구현하고, 이를 다음과 같이 활용하는 main() 메소드를 가진 클래스 DictionaryApp도 작성하라.
package PairMap;
abstract class PairMap {
protected String keyArray[]; // key 들을 저장하는 배열
protected String valueArray[]; // value 들을 저장하는 배열
abstract String get(String key); // key 값을 가진 value 리턴, 없으면 null 리턴
abstract void put(String ket, String value); // key와 value를 쌍으로 저장. 기존에 key가 있으면, 값을 value로 수정
abstract String delete(String key); // key 값을 가진 아이템 (value와 함꼐) 삭제, 삭제된 value 값 리턴
abstract int length(); // 현재 저장된 아이템의 개수 리턴
}
package PairMap;
public class Dictionary extends PairMap {
protected int set=0;//keyArray, valueArray의 리스트값
public Dictionary(int num) {
keyArray=new String[num];
valueArray=new String[num];
}
public String get(String key) {
for(int i=0; i<keyArray.length; i++) {
if(key.equals(keyArray[i]))
return valueArray[i];
}
return null;
}
public void put(String key, String value) {
for(int i=0;i<keyArray.length;i++) {
if(key.equals(keyArray[i])) {
keyArray[i]=key;
valueArray[i]=value;
}
}
keyArray[set]=key;
valueArray[set]=value;
set++;
}
public String delete(String key) {
for(int i=0;i<keyArray.length;i++)
if(key.equals(keyArray[i])) {
String s=valueArray[i];
keyArray[i]=null;
valueArray[i]=null;
return s;
}
return null;
}
public int length() {
return set;
}
}
package PairMap;
public class DiactionaryApp {
public static void main(String[] args) {
Dictionary dic = new Dictionary(10);
dic.put("황기태", "자바");
dic.put("이재문", "파이선");
dic.put("이재문", "C++"); // 이재문의 값을 C++로 수정
System.out.println("이재문의 값은 "+dic.get("이재문"));
System.out.println("황기태의 값은 "+dic.get("황기태"));
dic.delete("황기태"); // 황기태 아이템 삭제
System.out.println("황기태의 값은 "+dic.get("황기태")); //삭제된 아이템 접근
}
}
9.다음은 단위를 변환하는 추상 클래스 Converter이다.
import java.util.Scanner;
abstract class Converter {
abstract protected double convert(double src); // 추상 메소드
abstract protected String getSrcString(); // 추상 메소드
abstract protected String getDestString(); // 추상 메소드
protected double ratio; // 비율
public void run() {
Scanner scanner = new Scanner(System.in);
System.out.println(getSrcString()+"을 "+getDestString()+"로 바꿉니다.");
System.out.print(getSrcString()+"을 입력하세요>> ");
double val = scanner.nextDouble();
double res = convert(val);
System.out.println("변환 결과: "+res+getDestString()+"입니다");
scanner.close();
}
}
[3번] Converter 클래스를 상속받아 원화를 달러로 변환하는 Won2Dollar 클래스를 작성하라. main() 메소드와 실행 결과는 다음과 같다.
public static void main(String args[]) {
Won2Dollar toDollar = new Won2Dollar(1200); // 1달러는 1200원
toDollar.run();
}
원을 달러로 바꿉니다.
원을 입력하세요>> 24000
변환 결과: 20.0달러입니다
풀이 정답)
package Converter;
class Won2Dollar extends Converter {
public Won2Dollar(double ratio) { this.ratio = ratio; }
protected double convert(double src) { return src/ratio; }
protected String getSrcString() { return "원"; }
protected String getDestString() { return "달러"; }
}
10. [4번] Converter 클래스를 상속받아 Km를 mile(마일)로 변환하는 Km2Mile 클래스를 작성하라, main() 메소드와 실행 결과는 다음과 같다.
public static void main(String args[]) {
Km2Mile toMile = new Km2Mile(1.6); // 1마일은 1.6km
toMile.run();
}
Km을 mile로 바꿉니다.
Km을 입력하세요>> 30
변환 결과: 18.75mile입니다
package Converter;
class Km2Mile extends Converter {
public Km2Mile(double ratio) { this.ratio = ratio; }
protected double convert(double src) { return src/ratio; }
protected String getSrcString() { return "Km"; }
protected String getDestString() { return "mile"; }
}
'Java > 스터디 예제 풀이' 카테고리의 다른 글
15장 제네릭과 컬렉션 연습 문제 및 LAB 문제-1 (0) | 2023.03.03 |
---|---|
9장 인터페이스, 람다식, 패키지 연습 문제 및 LAB 문제 (0) | 2023.03.03 |
7장 상속 연습 문제 및 LAB 문제 -1 (0) | 2023.03.03 |
6장 클래스와 메소드 심층 탐구 연습 문제 및 LAB 문제 (0) | 2023.02.05 |
5장 클래스, 객체, 메소드 연습 문제 및 LAB 문제 (0) | 2023.02.05 |