´ÙÀ½ÀÇ ÇÁ·Î±×·¥À» Á÷Á¢ ¼öÇà½ÃÄÑ º¸°í ¿©·¯ °¡Áö¸¦ ¼öÁ¤ÇÏ¸é¼ Å×½ºÆ® Çغ¸½Ã¿À.
½Ç½À¹®Á¦¾Æ·¡ÀÇ ¹®Á¦¸¦ Ç®¾î Á¦ÃâÇϽÿÀ.1¿øÀ» Ç¥렿ÇÏ´Â ´ÙÀ½ Circle Ŭ·¡½º°¡ ÀÖ´Ù.class Circle { private int radiusl public Circle(int radius) { this.radius = radius;} public int getRadius() { return radius; }Circle Ŭ·¡½º¸¦ »ó¼Ó¹ÞÀº NamedCircle Ŭ·¡½º¸¦ ÀÛ¼ºÇÏ¿©, ´ÙÀ½ main()À» ½ÇÇàÇÒ ¶§ ´ÙÀ½ ½ÇÇà °á°ú¿Í °°ÀÌ Ãâ·ÂµÇµµ·Ï Ç϶ó. public static void main(String[] args) { NamedCircle w = new NamedCircle(5, "Waffle"); w.show(); }2ÀÎÅÍÆäÀ̽º AdderInterfaceÀÇ ÄÚµå´Â ´ÙÀ½°ú °°´Ù.interface AdderInterface { int add(int x, int y); int add(int n);}AdderInterface¸¦ »ó¼Ó¹ÞÀº Ŭ·¡½º MyAdder¸¦ ÀÛ¼ºÇÏ¿©, ´ÙÀ½ 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´ÙÀ½ ÄÚµå¿Í ½ÇÇà °á°ú¸¦ Âü°íÇÏ¿© Ãß»ó Ŭ·¡½º Calculator¸¦ »ó¼Ó¹Þ´Â Adder¿Í Subtracter Ŭ·¡½º¸¦ ÀÛ¼ºÇ϶ó.import java.util.Scanner;abstract class Calculator { protected int a, b; abstract proctected 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); }} // ÀÌ °÷¿¡ Adder¿Í Subtracter Ŭ·¡½º¸¦ ÀÛ¼ºÇ϶ó. public class App { public static void main(String[] args) { Adder adder = new Adder(); Subtracter sub = new Subtracter(); adder.run(); sub.run(); }}42Â÷¿ø »óÀÇ ÇÑ Á¡À» Ç¥ÇöÇÏ´Â Point Ŭ·¡½º´Â ´ÙÀ½°ú °°´Ù.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; }}´ÙÀ½ main()À» ½ÇÇàÇÏ¿© °á°ú°¡ ±×¸²°ú °°µµ·Ï, Point¸¦ »ó¼Ó¹ÞÀº ColorPoint Ŭ·¡½º(main() Æ÷ÇÔ)¸¦ ÀÛ¼ºÇ϶ó. public static void main(String[] args) { ColorPoint cp = new ColorPoint(5, 5,"YELLOW"); cp.setPoint(10, 20); cp.setColor("GREEN"); cp.show(); } 5´ÙÀ½ StackInterface´Â ¹®ÀÚ¿À» Ǫ½ÃÇÏ°í ÆËÇÒ ¼ö ÀÖ´Â ½ºÅÿ¡ ´ëÇÑ ½ºÆåÀ» Á¤ÀÇÇÏ°í ÀÖ´Ù. StackInterface¸¦ »ó¼Ó¹Þ´Â StringStack Ŭ·¡½º¸¦ ±¸ÇöÇ϶ó. ±×¸®°í StackManager Ŭ·¡½º¿¡ main() ¸Þ¼Òµå¸¦ ÀÛ¼ºÇÏ¿© StringStack °´Ã¼¸¦ »ý¼ºÇÏ°í, »ç¿ëÀڷκÎÅÍ ¹®ÀÚ¿À» 5°³ ÀÐ¾î ½ºÅà °³Ã¼¸¦ ÀúÀåÇÏ°í, ´Ù½Ã ÆËÇÏ¿© ÀÐÀº ¹Ý´ë¼øÀ¸·Î Ãâ·ÂÇ϶ó.interface StackInterface { int length(); String pop(); boolean push(String ob);}6°£´ÜÇÑ ±×·¡ÇÈ ÆíÁý±â¸¦ ¸¸µé¾îº¸ÀÚ. º»¹® 5.6ÀýÀÇ ¸Þ¼Òµå ¿À¹ö¶óÀ̵ù°ú 5.7ÀýÀÇ Ãß»óŬ·¡½ºÀÇ ¼³¸í Áß¿¡ Line, Rect, Circle Ŭ·¡½º Äڵ带 È°¿ëÇÏ¿©, ´ÙÀ½ ½ÇÇà °á°úó·³ µ¿ÀÛÇÏ´Â ÇÁ·Î±×·¥À» ÀÛ¼ºÇ϶ó.
½Ç½À¹®Á¦
¾Æ·¡ÀÇ ¹®Á¦¸¦ Ç®¾î Á¦ÃâÇϽÿÀ.
1
¿øÀ» Ç¥렿ÇÏ´Â ´ÙÀ½ Circle Ŭ·¡½º°¡ ÀÖ´Ù.
class Circle {
private int radiusl
public Circle(int radius) { this.radius = radius;}
public int getRadius() { return radius; }
Circle Ŭ·¡½º¸¦ »ó¼Ó¹ÞÀº NamedCircle Ŭ·¡½º¸¦ ÀÛ¼ºÇÏ¿©, ´ÙÀ½ main()À» ½ÇÇàÇÒ ¶§ ´ÙÀ½ ½ÇÇà °á°ú¿Í °°ÀÌ Ãâ·ÂµÇµµ·Ï Ç϶ó.
public static void main(String[] args) { NamedCircle w = new NamedCircle(5, "Waffle"); w.show();
}
2
ÀÎÅÍÆäÀ̽º AdderInterfaceÀÇ ÄÚµå´Â ´ÙÀ½°ú °°´Ù.
interface AdderInterface {
int add(int x, int y);
int add(int n);
}
AdderInterface¸¦ »ó¼Ó¹ÞÀº Ŭ·¡½º MyAdder¸¦ ÀÛ¼ºÇÏ¿©, ´ÙÀ½ main()À» ½ÇÇàÇÒ ¶§ ¾Æ·¡ ½ÇÇà °á°ú¿Í °°ÀÌ Ãâ·ÂµÇµµ·Ï Ç϶ó.
3
´ÙÀ½ ÄÚµå¿Í ½ÇÇà °á°ú¸¦ Âü°íÇÏ¿© Ãß»ó Ŭ·¡½º Calculator¸¦ »ó¼Ó¹Þ´Â Adder¿Í Subtracter Ŭ·¡½º¸¦ ÀÛ¼ºÇ϶ó.
import java.util.Scanner;
abstract class Calculator { protected int a, b;
abstract proctected 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); }}
// ÀÌ °÷¿¡ Adder¿Í Subtracter Ŭ·¡½º¸¦ ÀÛ¼ºÇ϶ó.
public class App { public static void main(String[] args) { Adder adder = new Adder(); Subtracter sub = new Subtracter();
adder.run(); sub.run(); }
4
2Â÷¿ø »óÀÇ ÇÑ Á¡À» Ç¥ÇöÇÏ´Â Point Ŭ·¡½º´Â ´ÙÀ½°ú °°´Ù.
´ÙÀ½ main()À» ½ÇÇàÇÏ¿© °á°ú°¡ ±×¸²°ú °°µµ·Ï, Point¸¦ »ó¼Ó¹ÞÀº ColorPoint Ŭ·¡½º(main() Æ÷ÇÔ)¸¦ ÀÛ¼ºÇ϶ó.
public static void main(String[] args) { ColorPoint cp = new ColorPoint(5, 5,"YELLOW"); cp.setPoint(10, 20); cp.setColor("GREEN"); cp.show();
5
´ÙÀ½ StackInterface´Â ¹®ÀÚ¿À» Ǫ½ÃÇÏ°í ÆËÇÒ ¼ö ÀÖ´Â ½ºÅÿ¡ ´ëÇÑ ½ºÆåÀ» Á¤ÀÇÇÏ°í ÀÖ´Ù. StackInterface¸¦ »ó¼Ó¹Þ´Â StringStack Ŭ·¡½º¸¦ ±¸ÇöÇ϶ó. ±×¸®°í StackManager Ŭ·¡½º¿¡ main() ¸Þ¼Òµå¸¦ ÀÛ¼ºÇÏ¿© StringStack °´Ã¼¸¦ »ý¼ºÇÏ°í, »ç¿ëÀڷκÎÅÍ ¹®ÀÚ¿À» 5°³ ÀÐ¾î ½ºÅà °³Ã¼¸¦ ÀúÀåÇÏ°í, ´Ù½Ã ÆËÇÏ¿© ÀÐÀº ¹Ý´ë¼øÀ¸·Î Ãâ·ÂÇ϶ó.
6
Open Challenge
BearÀÇ Fish ¸Ô±â °ÔÀÓ
ÀÌ °ÔÀÓ¿¡´Â Bear¿Í Fish °´Ã¼°¡ µîÀåÇϸç, À̵éÀº 10Çà 20¿ÀÇ °ÝÀÚÆÇ¿¡¼ °¢°¢ Á¤ÇØÁø ±ÔÄ¢¿¡ ÀÇÇØ ¿òÁ÷ÀδÙ. Bear´Â »ç¿ëÀÚÀÇ Å°¿¡ ÀÇÇØ ¿ÞÂÊ(a Å°), ¾Æ·¡(s Å°), À§(d Å°), ¿À¸¥ÂÊ (f Å°)À¸·Î ÇÑ Ä¾¿ ¿òÁ÷ÀÌ°í Fish´Â ´Ù¼¸ ¹ø Áß ¼¼¹øÀº Á¦ÀÚ¸®¿¡ ÀÖ°í, ³ª¸ÓÁö µÎ¹øÀº 4°¡Áö ¹æÇâ Áß ·£´ýÇÏ°Ô ÇÑ Ä¾¿ ¿òÁ÷ÀδÙ. °ÔÀÓÀº Bear°¡ Fish¸¦ ¸ÔÀ¸¸é(FishÀÇ À§Ä¡·Î À̵¿) ¼º°øÀ¸·Î ³¡³´Ù.
´ÙÀ½Àº °¢ °³Ã¼ÀÇ À̵¿À» Á¤ÀÇÇÏ´Â move()¿Í °¢ °³Ã¼ÀÇ ¸ð¾çÀ» Á¤ÀÇÇÏ´Â getShape()À» Ãß»ó ¸Þ¼Òµå·Î °¡Áø Ãß»ó Ŭ·¡½º GameObjectÀÌ´Ù. GameObject¸¦ »ó¼Ó¹Þ¾Æ Bear¿Í Fish Ŭ·¡½º¸¦ ÀÛ¼ºÇ϶ó. ±×¸®°í ÀüüÀûÀÎ °ÔÀÓÀ» ÁøÇàÇÏ´Â Game Ŭ·¡½º¿Í main()ÇÔ¼ö¸¦ ÀÛ¼ºÇÏ°í ÇÁ·Î±×·¥À» ¿Ï¼ºÇ϶ó.
public abstract class GameObject { // Ãß»ó Ŭ·¡½º protected int distance; // ÇÑ ¹ø À̵¿ °Å¸® protected int x, y; // ÇöÀç À§Ä¡(È¸é ¸Ê »óÀÇ À§Ä¡)
public GameObject(int startX, int startY, int distance) { // Ãʱâ À§Ä¡¿Í À̵¿ °Å¸® ¼³Á¤ this.x = startX; this.y = startY; this.distance = distance; } public int getX() { return x; } public int getY() { return y; } public boolean collide(GameObject p) { // ÀÌ °´Ã¼°¡ °´Ã¼ p¿Í Ãæµ¹ÇßÀ¸¸é true ¸®ÅÏ if(this.x == p.getX() && this.y == p.getY()) return true; else return false; }
public abstract void move(); // À̵¿ÇÑ ÈÄÀÇ »õ·Î¿î À§Ä¡·Î x, y º¯°æ public abstract char getShape(); // °´Ã¼ÀÇ ¸ð¾çÀ» ³ªÅ¸³»´Â ¹®ÀÚ ¸®ÅÏ}