일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 자바 오류
- 예제
- 페이지분석
- 웹브라우저 수용도
- 자바
- 숫자 형식
- 우아한테크
- 크롤링
- 생성자
- 함수 선언
- dbms
- 예외
- 숫자형식오류
- R1C3
- DoitSQL
- 배열 예제
- 웹 브라우저 전쟁
- 배열 3요소
- SQL
- DoitSQL입문
- 크롤링 오류
- Doit입문SQL
- 키-값 데이터베이스
- SQL입문
- 함수
- html
- 데이터베이스
- HTML역사
- 자바 예외
- DoIt
Archives
- Today
- Total
프로그래밍
[자바 기초] day10 : 상속 오버라이딩 예제 본문
728x90
반응형
2023.05.16.화
[ 연습 문제 ]
===== 메뉴 =====
1. 점 생성
2. 점 목록 출력
3. 점 1개 출력
4. 점 이동
5. 색 변경
6. 점 합치기 (+)
7. 프로그램 종료
===============
Point[] data=new Point[3]; // 최대 3개
new Point(); // 점(0,0)
new Point(3,4); // 점(3,4)
new ColorPoint(); // 검정(0,0)
new ColorPoint(1,2); // 검정(1,2)
new ColorPoint("빨강",3,4); // 빨강(3,4)
점(1,2)
검정(2,3)
분홍(-1,-3)
이동
point.move(); -> +1 +1
point.move(10); -> +10 +10
point.move(1,2); -> +1 +2
색 변경
point.changeColor("빨강")
점 합치기
1,2 + 2,3 => 3,5
예제 코드)
package class02;
// 점 프로그램
import java.util.Scanner;
class Point {
int x;
int y;
Point() { // 기본값 (0,0)
this(0, 0);
System.out.println("1");
}
Point(int x, int y) { // x, y 사용자에게 입력받아 생성
this.x = x;
this.y = y;
System.out.println("2");
}
void printInfo() {
System.out.println("점(" + this.x + "," + this.y + ")");
}
void move() {
this.x++;
this.y++;
}
void move(int x) {
this.x += x;
this.y += x;
}
void move(int x, int y) {
this.x += x;
this.y += y;
}
@Override
public String toString() {
return "점(" + this.x + "," + this.y + ")";
}
}
class ColorPoint extends Point {
String color;
ColorPoint() {
this(0, 0);
System.out.println("3");
}
ColorPoint(int x, int y) {
this("검정", x, y);
System.out.println("4");
}
ColorPoint(String color, int x, int y) {
super(x, y);
this.color = color;
System.out.println("5");
}
void printInfo() {
System.out.println(this.color+"(" + this.x + "," + this.y + ")");
}
void colorChange(String color) {
this.color = color;
System.out.println("색이 " + this.color + "로 변경되었습니다");
}
@Override
public String toString() { //printInfo를 만들지 않아도 원하는 방식으로 출력 가능 > 자원 절약
return this.color+"(" + this.x + "," + this.y + ")";
}
}
public class Test01 {
public static void addPoint(Point point1, Point point2) {
Point resPoint = new Point();
resPoint.x = point1.x + point2.x;
resPoint.y = point1.y + point2.y;
System.out.println(point1);
System.out.println(point2);
System.out.println(resPoint.x + resPoint.y);
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String menu = "====== 메뉴 ======\n"
+ "1. 점 생성\n" + "2. 점 목록 출력\n"
+ "3. 점 1개 출력\n"
+ "4. 점 이동\n"
+ "5. 색 변경\n"
+ "6. 점 합치기\n"
+ "7. 프로그램 종료\n"
+ "==================\n "
+ "\n"
+ "번호 입력 : ";
Point[] data = new Point[3];
int index = 0;
while(true) {
System.out.println(menu);
int action = sc.nextInt();
if (action == 1) {
System.out.println("원하는 점을 선택하세요");
System.out.println("1.점\n"+"2.색깔이 있는 점");
System.out.println("입력: ");
action = sc.nextInt();
if(action==1) {
System.out.println("1.생성할 좌표를 알고있는 경우\n"+"2.모르는 경우");
System.out.println("입력: ");
action = sc.nextInt();
if(action == 1) {
System.out.println("x좌표 입력: ");
int x =sc.nextInt();
System.out.println("y좌표 입력: ");
int y =sc.nextInt();
data[index++] = new Point(x, y);
System.out.println("점("+x+","+y+")이 생성되었습니다");
}
else if(action == 2) {
data[index++] = new Point();
System.out.println("점 (0,0)이 생성되었습니다");
}
}
else if(action==2) {
System.out.println("1.생성할 좌표와 색깔을 모두 알고있는 경우\n"+"2.좌표만 아는 경우\n"+"3.모르는 경우");
System.out.println("입력: ");
action = sc.nextInt();
if(action == 1) {
System.out.println("색깔 입력: ");
String color = sc.next();
System.out.println("x좌표 입력: ");
int x =sc.nextInt();
System.out.println("y좌표 입력: ");
int y =sc.nextInt();
data[index] = new ColorPoint(color, x, y);
index++;
System.out.println(color+"("+x+","+y+")이 생성되었습니다");
}
else if(action == 2) {
System.out.println("x좌표 입력: ");
int x =sc.nextInt();
System.out.println("y좌표 입력: ");
int y =sc.nextInt();
data[index] = new ColorPoint(x, y);
index++;
System.out.println("검정("+x+","+y+")이 생성되었습니다");
}
else if(action == 3) {
data[index] = new ColorPoint();
index++;
System.out.println("검정(0,0)이 생성되었습니다");
}
}
}
else if (action == 2) {
System.out.println("===== 점 목록 =====");
for(int i=0; i<index; i++) {
data[i].printInfo();
}
System.out.println("=================");
// 다른 방식
// for(Point point:data) {
// if(point==null) {
// break;
// }
// System.out.println(point);
// ///// == System.out.println(point.toString()); 둘이 같다
// }
}
else if (action == 3) {
System.out.println("출력을 원하는 점 번호를 입력해주세요");
System.out.println("점 번호 입력: ");
int num = sc.nextInt();
data[num-1].printInfo();
}
else if (action == 4) {
System.out.println("이동을 원하는 점 번호를 입력해주세요");
System.out.println("점 번호 입력: ");
int num = sc.nextInt();
System.out.println("1.x, y 각각 이동\n"+"2.x,y 같은 값만큼 이동\n"+"3.모두 1씩 이동");
action = sc.nextInt();
if(action==1) {
System.out.println("x좌표 입력: ");
int x =sc.nextInt();
System.out.println("y좌표 입력: ");
int y =sc.nextInt();
data[num-1].move(x,y);
data[num-1].printInfo();
}
else if(action==2) {
System.out.println("x좌표 입력: ");
int x =sc.nextInt();
data[num-1].move(x);
data[num-1].printInfo();
}
else if(action==3) {
data[num-1].move();
data[num-1].printInfo();
}
}
else if (action == 5) {
System.out.print("index 번호 입력) ");
action=sc.nextInt();
if(data[action] instanceof ColorPoint) { // data[action]이 색깔점이야?
ColorPoint cp=(ColorPoint)data[action];
System.out.print("색 입력) ");
String color=sc.next();
cp.colorChange(color);
}
else {
System.out.println("색 변경 불가능!");
}
System.out.println(data[action]);
System.out.println();
}
else if (action == 6) {
System.out.println("합치고 싶은 점 번호를 입력해주세요");
System.out.println("첫번째 점 번호 입력: ");
int num1 =sc.nextInt();
System.out.println("두번째 점 번호 입력: ");
int num2 =sc.nextInt();
addPoint(data[num1-1], data[num2-1]);
}
else if (action == 7) { //프로그램 종료
break;
}
else {
}
}
}
}
점 합치기(더하기)는 점들, 객체들이 주체가 아니므로 점 클래스가 아닌 main()에서 다루는 것이 옳다
기능을 개발할때에는 주채가 누구인지 고민해야 한다
728x90
반응형
'자바 > 자바 기초' 카테고리의 다른 글
[자바 기초] day11 : 추상화(abstract) (0) | 2023.05.18 |
---|---|
[자바 기초] day11 : 캡슐화(private-getter, setter) (0) | 2023.05.18 |
[자바 기초] day10 : 상속 심화(오버라이딩 점 예제) (0) | 2023.05.18 |
[자바 기초] day09 : 상속 예제 (0) | 2023.05.16 |
[자바 기초] day09 : 클래스 상속 (0) | 2023.05.16 |
Comments