본문 바로가기
수업 문제(국비 지원)/Java

[JAVA] 2022.09.05 - java 접근 제한자, 클래스 구현

by byeolsub 2023. 4. 29.

 ❓

문제 : 
 구동클래스를 실행하였을때 다음의 결과가 나오도록 관련 클래스를 구현하기

[결과]  
DanceRobot은 춤을 춤니다.
SingRobot은 노래를 부릅니다.
DrawRobot은 그림을 그립니다.
문제
package chap8;

public class Test1 {
	public static void main(String[] args) {
		Robot[] robot = new Robot[3];
		robot[0] = new DanceRobot();
		robot[1] = new SingRobot();
		robot[2] = new DrawRobot();
		for(Robot r : robot) {
			r.action(); 
		}
	}
}

package chap8;

abstract class Robot {
    String name;
    Robot(String name){
        this.name = name;
    }
    abstract void action();
}
class DanceRobot extends Robot {
    DanceRobot(){
        super("DanceRobot");
    }
    public void action(){
        System.out.println( name +"은 춤을 춤니다.");
    }
   
}
class SingRobot extends Robot {
    SingRobot(){
        super("SingRobot");
    }
    public void action(){
        System.out.println( name +"은 노래를 부릅니다.");
    }
}
class DrawRobot extends Robot {
    DrawRobot(){
        super("DrawRobot");
        
    }
    public void action(){
        System.out.println( name +"은 그림을 그립니다.");
    }
   

}

public class Test1 {
	public static void main(String[] args) {
		Robot[] robot = new Robot[3];
		robot[0] = new DanceRobot();
		robot[1] = new SingRobot();
		robot[2] = new DrawRobot();
		for(Robot r : robot) {
			r.action(); 
		}
	}
}

 

💡 인터페이스로도 구현 가능!

interface Robot {
    void action();
}
class DanceRobot implements Robot {
    @Override
    public void action() {
       System.out.println("DanceRobot은 춤을 춥니다.");
    }
class SingRobot implements Robot {
    @Override
    public void action() {
       System.out.println("SingRobot은 노래를 부릅니다.");
    }
class DrawRobot implements Robot {
    @Override
    public void action() {
       System.out.println("DrawRobot은 그림을 그립니다.");
    }
}

문제 : 
 구동 클래스 실행시 다음의 결과가 나오도록 ,
DataAccessObject 인터페이스와 OracleDao,MySqlDao 클래스를 구현하기.

[결과]
Oracle DB에서 검색
Oracle DB에 삽입
Oracle DB에 수정
Oracle DB에서 삭제
Mysql DB에서 검색
Mysql DB에 삽입
Mysql DB에 수정
Mysql DB에서 삭제
문제
package chap8;

public class Test2 {
	public static void main(String[] args) {
	      dbWork(new OracleDao());
	      dbWork(new MySqlDao());
	}
   private static void dbWork(DataAccessObject dao) {
         dao.select();
         dao.insert();
         dao.update();
         dao.delete();
   }
}

package chap8;

interface DataAccessObject {
    void select();
    void insert();
    void update();
    void delete();
}
class OracleDao implements DataAccessObject {
    String DB;
    OracleDao(){
        this.DB = "Oracle";
    }
    @Override
    public void select() {
        System.out.println(DB+"DB에서 검색");
    }
    @Override
    public void insert() {
        System.out.println(DB + "DB에서 삽입");
    }
    @Override
    public void update() {
        System.out.println(DB + "DB에서 수정");
    }
    @Override
    public void delete() {
        System.out.println(DB + "DB에서 삭제");
    }
}
class MySqlDao implements DataAccessObject {
    String DB;
    MySqlDao(){
        this.DB = "MySql";
    }

    @Override
    public void select() {
        System.out.println(DB+"DB에서 검색");
    }
    
    @Override
    public void insert() {
        System.out.println(DB + "DB에서 삽입");
    }
    @Override
    public void update() {
        System.out.println(DB + "DB에서 수정");
    }
    @Override
    public void delete() {
        System.out.println(DB + "DB에서 삭제");
    }

}

public class Test2 {
	public static void main(String[] args) {
	      dbWork(new OracleDao());
	      dbWork(new MySqlDao());
	}
   private static void dbWork(DataAccessObject dao) {
         dao.select();
         dao.insert();
         dao.update();
         dao.delete();
   }
}