JAVA 12일차(221108)

점햠미·2022년 11월 8일
0

JATBAP'S JAVA

목록 보기
12/22
post-thumbnail

1. is a 관계와 has a 관계에 대하여 설명하시오.


// 열혈자바 내용

// 출처 : https://leesteady.tistory.com/36

2. 다형성(polymorphism)이란 무엇인가?

형이 많다. (many formas) 

상속 관계에서 서로 관련된 많은 클래스들이 있을 때 '다형성'이라고 말한다.

객체 지향 프로그래밍OOP(Object-Oriented Programming)의 핵심 개념 중 하나

is-a 의 상속 관계라면 그 객체는 다형성이다.

객체에 접근하는 유일한 방법이 참조 변수를 통한 것이기 때문에 가능함

polymorphism(다형성)의 활용 방법: 
가상 메소드 호출(virtual method invocation) 

부모 = 자식 (wihtout 형변환)부모 클래스 타입(참조형)으로 
자식 클래스의 객체를 생성할 수 있다.

기본적으로 반대의 경우는 안됨(나중에 되는 케이스를 배우긴 한다...)

3. 아래가 되지 않는 이유에 대하여 메모리 그림으로 설명하시오.

SmartPhone ph2 = new MobilePhone();

4. 다음을 만족하는 클래스 Employee를 작성하시오

- 클래스 : 
Employee(직원)은 클래스 Regular(정규직)와 Temporary(비정규직)의 상위 클래스
- 필드: 이름, 나이, 주소, 부서, 월급 정보를 필드로 선언
- 생성자 : 이름, 나이, 주소, 부서를 지정하는 생성자 정의
- 메소드 printInfo() : 인자는 없고 자신의 필드 이름, 나이, 주소, 부서를 출력

5. 다음을 만족하는 클래스 Regular를 작성하시오. Series_02 (필수)

클래스 Regular는 위에서 구현된 클래스 Employee의 하위 클래스
생성자 : 이름, 나이, 주소, 부서를 지정하는 상위 생성자 호출
Setter : 월급 정보 필드를 지정
메소드 printInfo() : 인자는 없고 "정규직"이라는 정보와 월급을 출력
class Employee {
	String name;
	int age;
	String addr;	
	String dept;	
	int salary;
	
	public Employee(String name, int age, String addr, String dept) {
		this.name = name;
		this.age = age;
		this.addr = addr;
		this.dept = dept;
	}
	
	public void printInfo() {
		System.out.println("이름 : " + name);
		System.out.println("나이 : " + age);
		System.out.println("주소 : " + addr);
		System.out.println("부서 : " + dept);
	}
}
class Regular extends Employee{
	public Regular(String name, int age, String addr, String dept) {
		super(name, age, addr, dept);
	}
	
	public void setSalary(int salary){
		super.salary = salary;
	}
	public void printInfo() {
		super.printInfo();
		
		System.out.println("정규직");
		System.out.println("월급 : " + super.salary);
	}
}

class Temporary extends Employee{
	int workHour;
	// int timepay = 10000; 
    // 이렇게 지정해도 됨.
	int timePay;
	
	public Temporary(String name, int age, String addr, String dept) {
		super(name, age, addr, dept);
		timePay = 10000;
	}
	public void setWorkHours(int workHour) {
		this.workHour = workHour;		// 일 한 시간을지정하면서
		this.salary = workHour * this.timePay;		
		// 일 한 시간 * 시간당 보수로 계산하여 저장.
		// this.timePay로 써도 되고 그냥 timePay로 써도 되고.
	}
	
	public void printInfo() {
		super.printInfo();
		System.out.println("비정규직");
		System.out.println("일한시간" + workHour);
		System.out.println("급여" + salary);
	}
}
public class EmployeeExtends {
	public static void main(String[] args) {
		Employee employee = new Employee
        ("홍길동", 19, "서울 뉴욕시", "개발 1팀");
		employee.printInfo();
		System.out.println();
		
		
		Regular kim = new Regular
        ("김길동", 19, "서울 뉴욕시", "개발 1팀");
		kim.setSalary(10000);
		kim.printInfo();
		System.out.println();
		
		Temporary t = new Temporary
        ("장보고", 25, "인천", "경리부");
		t.setWorkHours(120);
		t.printInfo();
	}
}

6. 갬블링 게임을 만들어 보자.(Main 안에서 모든 로직을 처리하지 말고, class로 만들어서 활용해 보도록 합시다.)

두 사람이 게임을 진행한다. 
이들의 이름을 키보드로 입력 받으며 각 사람은 Person 클래스로 작성하라. 
그러므로 프로그램에는 2개의 Person 객체가 생성되어야 한다. 
두 사람은 번갈아 가면서 게임을 진행하는데 
각 사람이 자기 차례에서 <Enter> 키를 입력하면, 
3개의 난수가 발생되고 이 숫자가 모두 같으면 승자가 되고 게임이 끝난다. 
난수의 범위를 너무 크게 잡으면 3개의 숫자가 일치하게 나올 가능성이 적기 때문에 
숫자의 범위는 1~3까지로 한다.
========================================================================

1번째 선수 이름>>수희
2번째 선수 이름>>연수

[수희]:
3  1  1  아쉽군요!
[연수]:
3  1  3  아쉽군요!
[수희]:
2  2  1  아쉽군요!
[연수]:
1  1  2  아쉽군요!
[수희]:
3  3  3  수희님이 이겼습니다
import java.util.Scanner;

class Random{
	int[] arr = new int[3];

	public void Random() {
		for(int i = 0;i<arr.length;i++) {
			arr[i] = (int) ((Math.random() * 3) + 1);
			System.out.print(arr[i] + " ");
		}
	}
}

public class Gamble {
	public static void main(String[] args) {

		String p1, p2;

		Scanner sc = new Scanner(System.in);

		System.out.print("Player1의 이름 : ");
		p1 = sc.nextLine();

		System.out.print("Player2의 이름 : ");
		p2 = sc.nextLine();

		Random rd = new Random();
		rd.Random();

	}
}

제가 할 수 있는건 여기까지예요.... 플레이어 이름 입력받고 배열 랜덤으로 나오게 하기.................. If나 이런거 써서 아쉽군요를 띄우는건가? 싶은데 엔터 눌러서 반복시키고 하는걸 모르겠는데숭..... 왜 A B C 알려주다가 갑자기 저멀리꺼 하라 그러세요 😢

profile
인생 망함 개조빱임

0개의 댓글