SQLD, ECLIPS, JAVA,PYTHON, NODE....

[Eclips] Java - 상속 및 OOP 과제 본문

Java

[Eclips] Java - 상속 및 OOP 과제

D_Aiden 2023. 12. 17. 16:51
728x90
반응형
SMALL

2023.12.15

(과제1) 상속과 oop가 적용된 다이어그램으로 코딩하시오.

프로그램 작성단계

1. interface 정의하기
2. Super 클래스 정의하기
3. Sub 클래스 정의하기
4. PolyClass(다형성활용 클래스) 정의하기
5. Test 클래스 정의하기: 클래스명은 TestPrint

 

프로그램 작성을 위한 요구사항

1. 다이어그램에 명시된 모든 내용을 반영해서 소스코드를 완성한다.
2. OOP의 개념을 적용한다.
3. 거미 객체의 경우 8개의 다리를 갖도록 맴버변수를 초기화 한다.
4. 물고기 객체의 경우
- 맴버변수의 이름을 '물고기'로 정하고, 다리갯수는 0으로 초기화 한다.
- super 메소드 호출구문을 포함한 메소드를 정의한다.
5. 고양이 객체의 경우 this 생성자함수와 super생성자 함수를 사용해서 생성자함수와 오버로드딩 구문을 작성한다.
- 고양이 이름의 기본값은 "도둑고양이"로 초기화 한다.
6. PolyClass의 경우, 각각의 method body는 다형성을 표현할 수 있는 1개의 메소드 호출구문으로 작성한다.

단위테스트 결과화면(consol)

거미는 8개의 다리를 이용해서 먹이를 잡아먹습니다.
도둑고양이는 거미와 쥐를 잡아먹습니다.
물고기는 벌래를 먹습니다.

도둑고양이는 혼자 돌아다닙니다.
물고기는 하루종일 헤엄치며 놉니다.

이름: 물고기
물고기는 걷지 못합니다.
다리가 없는 동물입니다.

이름: 도둑고양이
다리갯수 4

답안

package AnimalClass;

abstract class Animal {
	int legs;

	Animal(int legs) {
		this.legs = legs;
	}

	abstract void eat();

	public void walk() {
		System.out.println("걷습니다.");
	}

	@Override
	public String toString() {
		return "다리갯수: " + legs;
	}
}
package AnimalEx;

// 인터페이스 정의
public 	interface PetEx {

	public static final int ANIMAL_TYPE = 1;
	public static final int PET_TYPE = 2;

	public void setName(String name);

	public String getName();

	public void play();
}
package AnimalClass;

abstract class Spider extends Animal {

	Spider() {
		super(8);
	}
	@Override
	static void act(Spider spider) {
        spider.eat();

	@Override
	void eat() {
		System.out.println("거미는 8개의 다리를 이용해서 먹이를 잡아먹습니다.");
	}
}
package AnimalClass;

//Fish 서브 클래스 정의
class Fish extends Animal implements Pet {
 private String name;

 public Fish() {
     super(0); // Fish는 다리가 없다고 가정
 }

 @Override
 public void setName(String name) {
     this.name = name;
 }

 @Override
 public String getName() {
     return name;
 }

 @Override
 public void eat() {
     System.out.println("물고기는 벌레를 먹습니다.");
 }

 @Override
 public void play() {
     System.out.println("물고기는 하루종일 헤엄치며 노립니다.");
 }
}
package AnimalClass;

//Fish 서브 클래스 정의
class Fish extends Animal implements Pet {
 private String name;

 public Fish() {
     super(0); // Fish는 다리가 없다고 가정
 }

 @Override
 public void setName(String name) {
     this.name = name;
 }

 @Override
 public String getName() {
     return name;
 }

 @Override
 public void eat() {
     System.out.println("물고기는 벌레를 먹습니다.");
 }

 @Override
 public void play() {
     System.out.println("물고기는 하루종일 헤엄치며 노립니다.");
 }
}
package AnimalClass;

//Cat 서브 클래스 정의
class Cat extends Animal implements Pet {
 private String name;

 Cat(String name) {
     super(4);
     this.name = name;
 }

 @Override
 public void setName(String name) {
     this.name = name;
 }

 @Override
 public String getName() {
     return name;
 }

 @Override
 public void eat() {
     System.out.println("도둑고양이는 거미와 쥐를 잡아먹습니다.");
 }

 @Override
 public void play() {
     System.out.println("도둑고양이는 혼자 돌아다닙니다.");
 }

 @Override
 public String toString() {
     return super.toString(); // 다리갯수 출력
 }
}
package AnimalClass;

public class PolyClass {

	public static final int ANIMAL_TYPE = 1;
	public static final int PET_TYPE = 2;

	public static void act(Animal animal) {
		if (animal instanceof Pet) {
			((Pet) animal).play();
		} else {
			animal.eat();
			animal.walk();
			System.out.println(animal);
		}
	}

	public static void act(Pet pet) {
		pet.play();
		System.out.println("이름: " + pet.getName());
		System.out.println(pet);
	}
}
package AnimalClass;

public class TestPrint {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

        Spider spider = new Spider();
        PolyClass.act(spider);

        Fish fish = new Fish();
        fish.setName("물고기");
        PolyClass.act(fish);

        Cat cat = new Cat("도둑고양이");
        PolyClass.act(cat);
	}
}
728x90
반응형
LIST