728x90
교재: 명품 자바 에센셜
<1. NamedCircle클래스>
class Circle {
private int radius;
public Circle(int radius) {
this.radius = radius;
}
public int getRadius() {
return radius;
}
}
public class NamedCircle extends Circle {
private String name;
public NamedCircle(int radius, String name) {
super(radius);
this.name = name;
}
public void show() {
System.out.println(name + ", 반지름 = " + getRadius());
}
public static void main(String[] args) {
NamedCircle w = new NamedCircle(5, "Waffle");
w.show();
}
}
<2. MyAdder클래스>
interface AdderInterface {
int add(int x, int y);
int add(int n);
}
class MyAdder implements AdderInterface {
@Override
public int add(int x, int y) {
return x + y;
}
@Override
public int add(int n) {
int sum = 0;
for (int i=1; i<=n; i++)
sum += i;
return sum;
}
}
public class Main{
public static void main(String[] args) {
MyAdder adder = new MyAdder();
System.out.println(adder.add(5, 10));
System.out.println(adder.add(10));
}
}
<3. Adder Subtracter 클래스>
import java.util.Scanner;
abstract class Calculator {
protected int a, b;
abstract protected int calc();
protected void input() {
Scanner scanner = new Scanner(System.in);
System.out.print("정수 2개를 입력하세요 >> ");
a = scanner.nextInt();
b = scanner.nextInt();
}
public void run() {
input();
int res = calc();
System.out.println("계산된 값은 " + res);
}
}
class Adder extends Calculator {
@Override
public int calc() {
return a+b;
}
}
class Subtracter extends Calculator {
@Override
public int calc() {
return a-b;
}
}
public class App {
public static void main(String args[]) {
Adder adder = new Adder();
Subtracter sub = new Subtracter();
adder.run();
sub.run();
}
}
Scanner를 안닫아줘도 실행은 잘 되는데, 그래도 되는지 모르겠네요.
추상클래스 안에서 닫아버리면 다시 호출할 때 오류가 나버리니까..ㅜㅜ
문제 자체는 어렵지 않았습니다!
<4. ColorPoint 클래스>
class Point {
private int x, y;
public Point(int x, int y) {
this.x = x; this.y = y;
}
public int getX() { return x; }
public int getY() { return y; }
protected void move(int x, int y) {
this.x = x; this.y = y;
}
}
public class ColorPoint extends Point {
private String color;
public ColorPoint(int x, int y, String color) {
super(x, y);
this.color = color;
}
public void setPoint(int x, int y) { move(x, y); }
public void setColor(String color) { this.color = color; }
public void show() {
System.out.println(color +"색으로 ("+ getX() +", " + getY() + ")");
}
public static void main(String[] args) {
ColorPoint cp = new ColorPoint(5,5,"Yellow");
cp.setPoint(10, 20);
cp.setColor("Green");
cp.show();
}
}
교수님은 public클래스에 main만 포함하도록 만들고, 다른 건 따로 클래스를 만드는 게 좋다고 하셨습니다.
그런데 이 책의 예제는 항상 main을 포함하는 클래스를 만들도록 되어있네요. 왜 그럴까요?.?
코딩 경험이 많이 없어서 잘 모르겠네요ㅜㅜ
<5. StringStack 클래스>
package lulu;
import java.util.Scanner;
interface StackInterface {
int length();
String pop();
boolean push(String ob);
}
class StringStack implements StackInterface {
String[] stack;
private int length;
private int top;
public StringStack() {
stack = new String[5];
length = 5;
top = - 1;
}
private boolean stackEmpty() {
if (top == -1)
return true;
else
return false;
}
private boolean stackfull() {
if (top == length - 1)
return true;
else
return false;
}
@Override
public int length() { return length; }
@Override
public String pop() {
if (!stackEmpty()) {
int temp = top;
top--;
return stack[temp];
}
else
return "666@@";
}
@Override
public boolean push(String ob) {
if (!stackfull()) {
top++;
stack[top] = ob;
return true;
}
else
return false;
}
}
public class StackManager {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
StringStack ss = new StringStack();
System.out.print(">>");
for (int i = 0; i < 5; i++) {
String s = scanner.next();
ss.push(s);
}
for (int i =0; i<5; i++) {
System.out.print(ss.pop() + " ");
}
}
}
stack자료구조에서 배열을 이용한다면 push pop함수는 항상 empty와 full을 검사해줘야하죠.
그래서 메소드 2개를 더 추가해줬습니다.
728x90
'프로그래밍 언어 > javastudy' 카테고리의 다른 글
명품 자바 에센셜 6단원/ 영문자 알파벳 히스토그램 (0) | 2021.07.14 |
---|---|
명품 Java Essential 5단원 실습문제 #2 (0) | 2021.07.14 |
명품 자바 에센셜 5단원/ Bear와 Fish 먹기 게임 (0) | 2021.07.13 |
명품 Java Essential 4단원 실습문제 #2 (0) | 2021.07.12 |
명품 Java Essential 4단원 실습문제 #1 (0) | 2021.07.11 |