package kr.or.ddit.homework.home15;
public class HomeWork15 {
public static void main(String[] args) {
System.out.println("전화 상담의 분배 방식 선택.");
System.out.println("R: RoundRobn");
System.out.println("L: LeastJob");
System.out.println("P: PriorityAllocation");
System.out.println("선택 >>");
/*
* Schedular 클래스.
* getNextCall();
* sendCallToAgent();
*
* RoundRobn, LeastJob, PriorityAllocation 클래스는 각각
* Schedular 클래스를 상속 받기.
*
* PriorityAllocation
* getNextCall
* -> 우선 순위가 높은 상담전화를 대기열에서 가져옴.
* sendCallToAgent
* -> 업무 스킬이 가장 우수한 상담원에게 상담전화를 분배.
*
* RoundRobn
* getNextCall
* -> 상담전화를 대기열에서 차례대로 가져옴.
* sendCallToAgent
* -> 차례대로 상담원에게 상담전화를 분배.
*
* LeastJob
* getNextCall
* -> 상담전화를 대기열에서 차례대로 가져옴.
* sendCallToAgent
* -> 대기열이 가장 짧은 상담원에게 상담전화를 분배.
*/
Schedular s ;
s.getNextCall();
s.sendCallToAgent();
}
}
정답
package kr.or.ddit.homework.HomeWork15;
public class Schedular {
public void getNextCall() {
}
public void sendCallToAgent() {
}
}
package kr.or.ddit.homework.HomeWork15;
public class PriorityAllocation extends Schedular{
@Override
public void getNextCall() {
System.out.println("우선 순위가 높은 상담전화를 대기열에서 가져옴");
}
@Override
public void sendCallToAgent() {
System.out.println("업무 스킬이 가장 우수한 상담원에게 상담전화를 분배");
}
}
package kr.or.ddit.homework.HomeWork15;
public class RoundRobn extends Schedular{
@Override
public void getNextCall() {
System.out.println("상담전화를 대기열에서 차례대로 가져옴");
}
@Override
public void sendCallToAgent() {
System.out.println("차례대로 상담원에게 상담전화를 분배");
}
}
package kr.or.ddit.homework.HomeWork15;
public class LeastJob extends Schedular{
@Override
public void getNextCall() {
System.out.println("상담전화를 대기열에서 차례대로 가져옴");
}
@Override
public void sendCallToAgent() {
System.out.println("대기열이 가장 짧은 상담원에게 상담전화를 분배");
}
}
package kr.or.ddit.homework.HomeWork15;
import java.util.Scanner;
public class HomeWork15 {
public static void main(String[] args) {
System.out.println("전화 상담의 분배 방식 선택.");
System.out.println("R: RoundRobn");
System.out.println("L: LeastJob");
System.out.println("P: PriorityAllocation");
System.out.println("선택 >>");
/*
* Schedular 클래스.
* getNextCall();
* sendCallToAgent();
*
* RoundRobn, LeastJob, PriorityAllocation 클래스는 각각
* Schedular 클래스를 상속 받기.
*
* PriorityAllocation
* getNextCall
* -> 우선 순위가 높은 상담전화를 대기열에서 가져옴.
* sendCallToAgent
* -> 업무 스킬이 가장 우수한 상담원에게 상담전화를 분배.
*
* RoundRobn
* getNextCall
* -> 상담전화를 대기열에서 차례대로 가져옴.
* sendCallToAgent
* -> 차례대로 상담원에게 상담전화를 분배.
*
* LeastJob
* getNextCall
* -> 상담전화를 대기열에서 차례대로 가져옴.
* sendCallToAgent
* -> 대기열이 가장 짧은 상담원에게 상담전화를 분배.
*/
Scanner sc = new Scanner(System.in);
String c = sc.next();
if(c.equalsIgnoreCase("R")) {
Schedular s = new RoundRobn();
s.getNextCall();
s.sendCallToAgent();
} else if(c.equalsIgnoreCase("L")) {
Schedular s = new LeastJob();
s.getNextCall();
s.sendCallToAgent();
} else if(c.equalsIgnoreCase("P")) {
Schedular s = new PriorityAllocation();
s.getNextCall();
s.sendCallToAgent();
} else {
System.out.println("잘못 입력하셨습니다.");
}
}
}
package kr.or.ddit.study07;
public class Computer {
public void run() {
System.out.println("컴퓨터 동작");
}
}
package kr.or.ddit.study07;
public class Computer486 extends Computer {
// 오버라이드 : 부모 클래스에서 만든 메소드를 재정의하여 사용한다.
@Override
public void run() {
System.out.println("486 컴퓨터 동작");
// super : 부모의 run 메소드
// super.run();
}
public void monitor() {
System.out.println("모니터 동작");
}
}
package kr.or.ddit.study07;
public class ComputerI5 extends Computer{
}
package kr.or.ddit.study07;
public class ComputerMain {
public static void main(String[] args) {
Computer486 c486 = new Computer486();
// 오버라이드를 사용하여 재정의함
c486.run();
c486.monitor();
ComputerI5 cI5 = new ComputerI5();
cI5.keyboard();
cI5.mouse();
cI5.run();
}
}
결과 화면1
package kr.or.ddit.study07.phone;
public class Phone {
public void call() {
System.out.println("LTE 전화");
}
public void camera() {
System.out.println("찰칵");
}
}
package kr.or.ddit.study07.phone;
public class DmbPhone extends Phone{
public void dmb() {
System.out.println("tv 시청");
}
}
package kr.or.ddit.study07.phone;
public class SmartPhone extends Phone{
public void touch() {
System.out.println("터치 기능 추가");
}
public void internet() {
System.out.println("인터넷 접속 추가");
}
}
package kr.or.ddit.study07.phone;
public class IPhone extends SmartPhone{
@Override
public void camera() {
System.out.println("1000만 화소 카메라");
}
public void appstore() {
System.out.println("앱스토어 접속");
}
}
package kr.or.ddit.study07.phone;
public class PhoneMain {
public static void main(String[] args) {
System.out.println("Phone");
Phone phone = new Phone();
phone.call();
phone.camera();
System.out.println();
System.out.println("DmbPhone");
DmbPhone dmbPhone = new DmbPhone();
dmbPhone.camera();
dmbPhone.call();
dmbPhone.dmb();
System.out.println();
System.out.println("SmartPhone");
SmartPhone smartPhone = new SmartPhone();
smartPhone.internet();
smartPhone.call();
smartPhone.camera();
// smartPhone.touch();
System.out.println();
System.out.println("IPhone");
IPhone iPhone = new IPhone();
iPhone.camera();
iPhone.appstore();
}
}
결과 화면2
package kr.or.ddit.study07.Pen;
public class Pen {
private int amount; // 남은 양
private String color; // 볼펜 색
public int getAmount() {
return amount;
}
public void setAmount(int amount) {
this.amount = amount;
}
}
package kr.or.ddit.study07.Pen;
public class SharpPencil extends Pen{ // 샤프펜슬
private int width; // 펜의 굵기
}
package kr.or.ddit.study07.Pen;
public class Ballpen extends Pen{ // 볼펜
private String color; // 볼펜의 색
public String setColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
}
package kr.or.ddit.study07.Pen;
public class FountainPen extends Ballpen{ // 만년필
// private int amount; // 남은 양
// private String color; // 볼펜 색
// public int getAmount() {
// return amount;
// }
// public void setAmount(int amount) {
// this.amount = amount;
// }
// public String getColor() {
// return color;
// }
// public void setColor(String color) {
// this.color = color;
// }
public void refill(int n) {
setAmount(n);
}
}
package kr.or.ddit.study07.Pen;
public class PenMain {
public static void main(String[] args) {
FountainPen fp = new FountainPen();
fp.setAmount(10);
fp.setColor("red");
int amount = fp.getAmount();
System.out.println(amount);
}
}
결과 화면3
package kr.or.ddit.study07.person;
public class Person {
private int age; // 나이
private String name; // 이름
private String gender; // 성별
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
}
package kr.or.ddit.study07.person;
public class Student extends Person{
private String room; // 반
private int score; // 점수
public String getRoom() {
return room;
}
public void setRoom(String room) {
this.room = room;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
@Override
public String toString() {
return "Student [room=" + room + ", score=" + score + ", getAge()=" + getAge() + ", getName()=" + getName()
+ ", getGender()=" + getGender() + "]";
}
}
package kr.or.ddit.study07.person;
public class SalaryMan extends Person {
private String company; // 회사이름
private int salary; // 연봉
private String dept; // 부서
public String getCompany() {
return company;
}
public void setCompany(String company) {
this.company = company;
}
public int getSalary() {
return salary;
}
public void setSalary(int salary) {
this.salary = salary;
}
public String getDept() {
return dept;
}
public void setDept(String dept) {
this.dept = dept;
}
@Override
public String toString() {
return "SalaryMan [company=" + company + ", salary=" + salary + ", dept=" + dept + ", getAge()=" + getAge()
+ ", getName()=" + getName() + ", getGender()=" + getGender() + "]";
}
// @Override
// public String toString() {
// super.getAge();
// super.getGender();
// super.getName();
// return "SalaryMan [company=" + company + ", salary=" + salary + ", dept=" + dept + "]";
// }
}
package kr.or.ddit.study07.person;
import java.util.Scanner;
public class PersonMain {
public static void main(String[] args) {
/*
* Person
* age
* name
* 성별
* -------------
* Student
* 반
* 점수
* -------------
* SalaryMan
* 회사 이름
* 연봉
* 부서
*/
SalaryMan sm = new SalaryMan();
sm.setAge(20);
sm.setName("김수연");
sm.setGender("남");
sm.setDept("영업");
sm.setCompany("1g");
System.out.println(sm);
System.out.println();
Student st = new Student();
st.setAge(22);
st.setName("강수수");
st.setGender("여");
st.setRoom("3반");
st.setScore(345);
System.out.println(st);
}
}
결과 화면4
package kr.or.ddit.study07.shape;
public class Point {
private int x;
private int y;
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
}
package kr.or.ddit.study07.shape;
public class Point {
private int x;
private int y;
Point() {
}
Point(int x, int y) {
this.x = x;
this.y = y;
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
}
package kr.or.ddit.study07.shape;
public class Triangle extends Shape{
private int area;
// Shape에서는 name과 point를 반드시 받았기에 Triangle에서도 반드시 받아야 함.
Triangle(Point[] p) {
super("삼각형", p);
}
}
package kr.or.ddit.study07.shape;
public class Rectangle extends Shape{
int area;
Rectangle(String name, Point[] p) {
// 부모 클래스에 존재함.
super(name, p);
}
}
package kr.or.ddit.study07.shape;
public class RightTriangel extends Triangle{
RightTriangel(Point[] p) {
super(p);
}
}
package kr.or.ddit.study07.shape;
public class ShapeMain {
public static void main(String[] args) {
/*
* Point
* x, y 좌표
*
* shape
* 이름
* Point 배열
*
* 사각형
*
* 삼각형
*
*/
Point[] p = {new Point(0,0), new Point(2,1), new Point(1,1)};
Triangle tr = new Triangle(p);
}
}
final 클래스, final 메소드
+ final 변수란
수정될 수 없는 변수를 이야기 하며 변수명을 대문자로 하여 사용한다.
ex) 𝝅
위와 같이 final 클래스와 메소드는
수정될 수 없으며 상속을 할 수 없다.
다형성
: 사용 방법은 동일하지만 다양한 객체를 활용해 여러 실행결과가 나오도록 하는 것을 말한다.
부모 클래스를 다시 재정의한다.
package kr.or.ddit.study07.animal;
public class Animal {
public void cry() {
}
}
package kr.or.ddit.study07.animal;
public class Cat extends Animal{
@Override
public void cry() {
System.out.println("야옹");
}
}
package kr.or.ddit.study07.animal;
public class Dog extends Animal{
@Override
public void cry() {
System.out.println("멍멍");
}
}
package kr.or.ddit.study07.animal;
import java.util.Scanner;
public class AnimalMain {
public static void main(String[] args) {
Animal ani = null;
Scanner sc = new Scanner(System.in);
System.out.println("1. 고양이");
System.out.println("2. 개");
int sel = sc.nextInt();
// 다형성
if(sel == 1) {
ani = new Cat();
} else if(sel == 2) {
ani = new Dog();
}
ani.cry();
}
}
결과 화면5
package kr.or.ddit.study07.car;
public class Car {
public void startCar() {
System.out.println("시동을 켜다.");
}
public void turnOff() {
System.out.println("시동을 끄다.");
}
public void stop() {
}
public void drive() {
System.out.println();
}
public void run() {
startCar();
drive();
stop();
turnOff();
}
}
package kr.or.ddit.study07.car;
public class AICar extends Car{
@Override
public void drive() {
System.out.println("자율 주행을 합니다.");
}
@Override
public void stop() {
System.out.println("자동차가 스스로 멈춥니다.");
}
}
package kr.or.ddit.study07.car;
public class ManualCar extends Car{
@Override
public void drive() {
System.out.println("사람이 운전합니다.");
}
@Override
public void stop() {
System.out.println("사람이 브레이크를 사용하여 차를 멈춥니다.");
}
}
package kr.or.ddit.study07.car;
public class CarMain {
public static void main(String[] args) {
/*
* Car
* run
* startCar()
* turnOff()
* drive()
* stop()
*
*/
// 부모 클래스 = 자식 클래스 : 부모 클래스에 있는 내용이 자식 클래스의 내용으로 덮어씌워짐
// >> 오버라이드 됨
Car c1 = new AICar();
c1.run();
System.out.println();
Car c2 = new ManualCar();
c2.run();
}
}
회원 가입의 addMember의 정보 입력 부분과 updateMember의 정보 입력 부분을 채워 넣으시오.
package kr.or.ddit.homework;
import java.util.Scanner;
public class HomeWork14 {
static Scanner sc = new Scanner(System.in);
Mem[] memList = new Mem[100];
int cur =0;
public static void main(String[] args) {
HomeWork14 h14 = new HomeWork14();
while(true) {
System.out.println("1. 회원 가입.");
// System.out.println("2. 회원 탈퇴.");
System.out.println("3. 정보 수정.");
System.out.println("4. 회원 전체 정보 출력.");
int sel = sc.nextInt();
if(sel == 1) {
h14.addMember();
}
if(sel == 3) {
h14.updateMember();
}
if(sel == 4) {
h14.printMemberList();
}
}
}
/*
* 회원 가입 메소드 만들기.
*/
public void addMember() {
Mem mem = new Mem();
/*
* 정보 입력
*/
}
/*
* 회원 탈퇴 메소드 만들기.
*/
public void removeMember() {
/*
* 회원 전체 정보 출력하기.
*/
System.out.print("탈퇴할 회원 번호 입력.");
int num = sc.nextInt();
remove(num);
}
public void remove(int num) {
Mem[] copyList = new Mem[100];
// 추후 배포
int add =0;
for(int i=0; i<copyList.length; i++) {
if(i == num) add =1;
copyList[i] = memList[i+add];
}
memList = copyList;
}
/*
* 회원 전체 정보 출력하기.
*/
public void printMemberList() {
for(int i=0; i<cur; i++) {
Mem mem = memList[i];
System.out.println(i + "\t" + mem);
}
}
/*
* 회원 정보 수정하기.
*/
public void updateMember() {
/*
* 회원 전체 정보 출력하기.
*/
printMemberList();
System.out.print("수정할 회원 번호 입력. ");
int num = sc.nextInt();
Mem mem = memList[num];
/*
* 정보 수정
*/
}
}
class Mem{
private String id;
private String pass;
private String name;
private int age;
/*
* 생성자 사용x
* getter setter 이용할것.
*/
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Mem [id=" + id + ", pass=" + pass + ", name=" + name + ", age=" + age + "]";
}
}
정답
package kr.or.ddit.homework;
import java.util.Scanner;
public class HomeWork14 {
static Scanner sc = new Scanner(System.in);
Mem[] memList = new Mem[100];
int cur =0;
public static void main(String[] args) {
HomeWork14 h14 = new HomeWork14();
while(true) {
System.out.println("1. 회원 가입.");
// System.out.println("2. 회원 탈퇴.");
System.out.println("3. 정보 수정.");
System.out.println("4. 회원 전체 정보 출력.");
int sel = sc.nextInt();
if(sel == 1) {
h14.addMember();
}
if(sel == 3) {
h14.updateMember();
}
if(sel == 4) {
h14.printMemberList();
}
}
}
/*
* 회원 가입 메소드 만들기.
*/
public void addMember() {
Mem mem = new Mem();
/*
* 정보 입력
*/
System.out.println("아이디를 입력하세요.");
String id = sc.next();
mem.setId(id);
System.out.println("비밀번호를 입력하세요.");
String pass = sc.next();
mem.setPass(pass);
System.out.println("이름을 입력하세요.");
String name = sc.next();
mem.setName(name);
System.out.println("나이를 입력하세요.");
int age = sc.nextInt();
mem.setAge(age);
memList[cur++] = mem;
}
/*
* 회원 탈퇴 메소드 만들기.
*/
public void removeMember() {
/*
* 회원 전체 정보 출력하기.
*/
System.out.print("탈퇴할 회원 번호 입력.");
int num = sc.nextInt();
remove(num);
}
public void remove(int num) {
Mem[] copyList = new Mem[100];
// 추후 배포
int add =0;
for(int i=0; i<copyList.length; i++) {
if(i == num) add =1;
copyList[i] = memList[i+add];
}
memList = copyList;
}
/*
* 회원 전체 정보 출력하기.
*/
public void printMemberList() {
for(int i=0; i<cur; i++) {
Mem mem = memList[i];
System.out.println(i + "\t" + mem);
}
}
/*
* 회원 정보 수정하기.
*/
public void updateMember() {
/*
* 회원 전체 정보 출력하기.
*/
printMemberList();
System.out.print("수정할 회원 번호 입력. ");
int num = sc.nextInt();
Mem mem = memList[num];
/*
* 정보 수정
*/
System.out.println("수정할 아이디를 입력하세요.");
String id = sc.next();
mem.setId(id);
System.out.println("수정할 비밀번호를 입력하세요.");
String pass = sc.next();
mem.setPass(pass);
System.out.println("수정할 이름을 입력하세요.");
String name = sc.next();
mem.setName(name);
System.out.println("수정할 나이를 입력하세요.");
int age = sc.nextInt();
mem.setAge(age);
}
}
class Mem{
private String id;
private String pass;
private String name;
private int age;
/*
* 생성자 사용x
* getter setter 이용할것.
*/
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Mem [id=" + id + ", pass=" + pass + ", name=" + name + ", age=" + age + "]";
}
}