카테고리 없음
[Java] 자바의 정석 / chap7.객체지향 프로그래밍_연습문제
sweetychocoding
2023. 9. 14. 01:01
728x90
7-1)
package example01;
class SutdaDeck {
final int CARD_NUM = 20;
SutdaCard[] cards = new SutdaCard[CARD_NUM];
SutdaDeck() {
for (int i = 0; i < cards.length; i++) {
int num = i % 10 + 1;
boolean isKwang = (i < 10) && (num == 1 || num == 3 || num == 8);
cards[i] = new SutdaCard(num, isKwang);
}
}
}
class SutdaCard {
int num;
boolean isKwang;
SutdaCard() {
this(1, true);
}
SutdaCard(int num, boolean isKwang) {
this.num = num;
this.isKwang = isKwang;
}
public String toString() {
return num + (isKwang ? "K" : "");
}
}
public class Ex05_Chapter7 {
public static void main(String[] args) {
SutdaDeck deck = new SutdaDeck();
for (int i = 0; i < deck.cards.length; i++) {
System.out.print(deck.cards[i] + ",");
}
}
}

7-2)
package example01;
class SutdaDeck {
final int CARD_NUM = 20;
SutdaCard[] cards = new SutdaCard[CARD_NUM];
SutdaDeck() {
for (int i = 0; i < cards.length; i++) {
int num = i % 10 + 1;
boolean isKwang = (i < 10) && (num == 1 || num == 3 || num == 8);
cards[i] = new SutdaCard(num, isKwang);
}
}
public void shuffle() {
for (int i = 0; i < cards.length; i++) {
int rNum = (int)(Math.random() * cards.length);
SutdaCard temp = cards[i];
cards[i] = cards[rNum];
cards[rNum] = temp;
}
}//shuffle()
public SutdaCard pick(int index) {
if (index < 0 || index >= CARD_NUM) {
return null;
}
return cards[index];
}//pick(int index)
public SutdaCard pick() {
int rNum = (int)(Math.random() * cards.length);
return cards[rNum];
//return pick(rNum); //pick(int index) 호출도 가능
}//pick()
}//Class SutdaDeck
class SutdaCard {
int num;
boolean isKwang;
SutdaCard() {
this(1, true);
}
SutdaCard(int num, boolean isKwang) {
this.num = num;
this.isKwang = isKwang;
}
public String toString() {
return num + (isKwang ? "K" : "");
}
}//Class SutdaCard
public class Ex05_Chapter7 {
public static void main(String[] args) {
SutdaDeck deck = new SutdaDeck();
System.out.println(deck.pick(0));
System.out.println(deck.pick());
deck.shuffle();
for (int i = 0; i < deck.cards.length; i++) {
System.out.print(deck.cards[i] + ",") ;
}
System.out.println();
System.out.println(deck.pick(0));
}
}

7-3)
package example01;
class Product {
int price;
int bonusPoint;
//기본 생성자
Product() {}
Product(int price) {
this.price = price;
bonusPoint = (int)(price / 10.0);
}
}//class Product
class Tv extends Product {
//기본 생성자
Tv() {}
//= Tv() {super();} => super() 호출
public String toString() {
return "Tv";
}
}//class Tv
public class Ex05_Chapter7 {
public static void main(String[] args) {
Tv t = new Tv();
}
}
7-4)
package example01;
class MyTv {
boolean isPowerOn;
int channel;
int volume;
final int MAX_VOLUME = 100;
final int MIN_VOLUME = 0;
final int MAX_CHANNEL = 100;
final int MIN_CHANNEL = 1;
public void setChannel(int channel) {
if (channel > MAX_CHANNEL || channel < MIN_CHANNEL) {
return;
}
this.channel = channel;
}
public int getChannel() {
return channel;
}
public void setVolume(int volume) {
if (volume > MAX_VOLUME || volume < MIN_VOLUME) {
return;
}
this.volume = volume;
}
public int getVolume() {
return volume;
}
}
public class Ex05_Chapter7 {
public static void main(String[] args) {
MyTv t = new MyTv();
t.setChannel(10);
System.out.println("CH: " + t.getChannel());
t.setVolume(20);
System.out.println("VOL: " + t.getVolume());
}
}

7-5)
package example01;
class MyTv2 {
private boolean isPowerOn;
private int channel;
private int volume;
private int preChannel;
final int MAX_VOLUME = 100;
final int MIN_VOLUME = 0;
final int MAX_CHANNEL = 100;
final int MIN_CHANNEL = 1;
public void setChannel(int channel) {
if (channel > MAX_CHANNEL || channel < MIN_CHANNEL) {
return;
}
preChannel = this.channel;
this.channel = channel;
}
public int getChannel() {
return channel;
}
public void setVolume(int volume) {
if (volume > MAX_VOLUME || volume < MIN_VOLUME) {
return;
}
this.volume = volume;
}
public int getVolume() {
return volume;
}
public void gotoPreChannel() {
setChannel(preChannel);
}
}
public class Ex05_Chapter7 {
public static void main(String[] args) {
MyTv2 t = new MyTv2();
t.setChannel(10);
System.out.println("CH: " + t.getChannel());
t.setChannel(20);
System.out.println("CH: " + t.getChannel());
t.gotoPreChannel();
System.out.println("CH: " + t.getChannel());
t.gotoPreChannel();
System.out.println("CH: " + t.getChannel());
}
}

7-6)
package j10_Exception;
class Outer {
class Inner {
int iv = 100;
}
}
public class Ex05_Chapter7 {
public static void main(String[] args) {
Outer o = new Outer();
Outer.Inner i = o.new Inner();
System.out.println(i.iv);
}
}

7-7)
package j10_Exception;
class Outer {
static class Inner {
int iv = 200;
}
}
public class Ex05_Chapter7 {
public static void main(String[] args) {
Outer.Inner si = new Outer.Inner();
System.out.println(si.iv);
}
}

7-8)
package j10_Exception;
class Outer {
int value = 10;
class Inner {
int value = 20;
void method1() {
int value = 30;
System.out.println(value);
System.out.println(this.value);
System.out.println(Outer.this.value);
}
}
}
public class Ex05_Chapter7 {
public static void main(String[] args) {
Outer outer = new Outer();
Outer.Inner inner = outer.new Inner();
inner.method1();
}
}

7-9)
package j10_Exception;
import java.awt.*;
import java.awt.event.*;
public class Ex05_Chapter7 {
public static void main(String[] args) {
Frame f = new Frame();
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
e.getWindow().setVisible(false);
e.getWindow().dispose();
System.exit(0);
}
});
}
}
.......어제 저녁에 풀고
아침에.......... 이어서 풀었는데
왤케 어려워...?
눈물날 거 같아............................................
728x90