본문 바로가기
💾 Backend/자바

💕객체 지향 공부 - 시나리오 작성💕

by 정람지 2023. 5. 9.

⭐️시나리오명 : 우주와 나⭐️


🌌UML- 클래스 다이어그램🌌

손 초안

거의 틀만 작성


🌌코드&기능설명🌌

<우주 클래스>

싱글톤 패턴을 이용해 단 하나의 우주만 생성될 수 있도록 합니다.

private static

 변수로 암흑물질, 암흑에너지를 설정해놓고 getter로 각 종말 시나리오를 볼 수 있게 합니다.


<우주탐사가능 인터페이스>

탐사활동하기 메소드


<탐사선 클래스>

추상 클래스

탐사선작동 템플릿 메소드 작성

<보이저2호 클래스>

캡슐화 (탐사가능private + Setter)

탐사선작동 메소드 탐사가능 변수값에 따라 작동(super 이용해서 코드 줄임)

지구신호수신,조사,지구신호발신 추상메소드 구현함으로써 탐사선작동 템플릿 메소드 사용가능.

<카시니_하위헌스,제임스 웹 망원경 클래스>

지구신호수신,조사,지구신호발신 추상메소드 구현함으로써 탐사선작동 템플릿 메소드 사용가능.

조사메소드 - 토성,LHS_475_b  인스턴스 만들어서 특성 메소드 호출


<생명 있음 인터페이스>

public static final boolean 존재 상수, 

감동가능 추상 메소드,

먹기 디폴트 메소드 - (Math.random()을 이용하여 private 메서드인 식물딴지() 메소드 랜덤등장) , 

정적 메소드 생명이란무엇인가() - (private static 메서드 whatIsLife() 호출) 이 있습니다. 

먹기 메소드는 몇 자식 클래스에서 오버라이딩하고 감동가능 추상 메소드도 자식 클래스들이 완성합니다. 

정적 메소드, 필드는 객체 생성 전 god 클래스의 메인 메소드가 호출해봅니다.

 

<은체 클래스>

싱글톤 패턴을 이용해 단 하나의 은체만 태어날 수 있도록 합니다.

생명있음 인터페이스의 감동가능 메소드,먹기 디폴트 메소드를 오버라이딩합니다.

<나사직원 클래스>

보이저2호 발사하기

Math.random 이용하여 탐사활동하기 오버라이딩 

나사직원에게 천체질문을 하여 천체의 이름과 위치를 알고(toString()) 대학원진학권유를받아보세요!

<외계인 클래스>

외계인은 외부 패키지에, Space 패키지 임포트

우주패키지 none 접근 불가 (지구?)

hashCode()로 사는 곳 

조건연산자를 이용하여 팔다리유무확인

Switch 문으로 지식수준 알기

생성자 오버로딩

인터페이스 디폴트 먹기() 메소드 오버라이딩

지구관찰 메소드 -  지구 인스턴스 만들어서 public 메소드 특성 확인 가능, NONE 메소드 지구의내밀한사정 확인 불가능


<천체 클래스>

추상 클래스. 특성() 추상 메소드를 보유.

천체 생성자 오버로딩. type 변수 설정하기.


<블랙홀 클래스>

웜홀 인스턴스를 이용해 물질을 흡수합니다.(물질

setter()이용)

천체 추상 부모클래스의 추상 메소드 '특성'을 오버라이딩합니다.


<화이트홀 클래스>

웜홀 인스턴스를 이용해 물질을 방출합니다.(물질setter(), 물질getter()이용)

천체 추상 부모클래스의 추상 메소드 '특성'을 오버라이딩합니다.

<웜홀 클래스>

화이트홀과 블랙홀 클래스를 연결하는 존재입니다. 이곳을 통해 물질이 이동한다고 이론상으로 설명됩니다.

private object형 물질 변수에 getter setter로 접근할 수 있게 합니다.


<성운 클래스>

추상 클래스.  특성() 추상 메소드를 구현.

<항성,행성상성운,적색거성,적색초거성,초신성 클래스>

super 이용하여 상위특성 메소드 오버라이딩, 특성 메소드 오버라이딩.

생성자에 type 변수 설정

초신성,행성상성운은 죽음, 초신성폭팔 메소드 추가구현. 초신성은 Math.random으로 랜덤으로 블랙홀이나 중성자별 됨.

초신성은 인 원소 변수 존재(instanceof용)

<성단,행성 클래스>

추상 클래스. 특성() 추상 메소드 구현.

생성자 상속, 오버로딩, namedistance 변수 설정

<LHS_475_b,토성 클래스>

특성 추상 메소드 구현

super 이용하여 상위특성 메소드 작성, 특성 메소드 오버라이딩.

<지구 클래스>

특성 추상 메소드 구현

none 메소드 작성으로 외부 패키지에서 확인할 수 없게 함(외계인클래스)

<구상성단,산개성단 클래스>

추상 클래스.

super 이용하여 상위특성 메소드 작성, 특성 메소드 오버라이딩.

<폴라이아데스,M15 클래스>

super 이용하여 상위특성 메소드 오버라이딩, 특성 메소드 오버라이딩.

 


🌌실행🌌

Space 패키지

God main클래스(메인 메소드+가독성을 위한 서브 메소드 몇 개)와 콘솔 실행창

<god 클래스>

신으로 설정한 main클래스입니다.

 

단일우주를 생성하여 우주 멸망 시나리오를 한번 봅니다.

천체 중 하나인 폴라이아데스를 골라 그 멤버들을 확인해 봅니다.

행성상 성운은 원래 적색 거성이었습니다. 적색 거성은 원래 항성이었습니다. instanceof를 이용해 이를 확인해봅니다.

초신성의 죽음을 관찰합니다. 초신성이 죽고 다시 성운으로 바뀌는 것을 업캐스팅을 통해 알아봅니다. 초신성이었을 때 가졌던 몇 인 원소를 찾을 수 없습니다. 남은 잔해들이 블랙홀에 끌려들어간 후 하나만 존재하는 웜홀을 통과하여  화이트홀로 빠져나갑니다. 

탐사선들 배열에 3개 담고 for each 문으로 각각의 탐사선작동 템플릿 메소드를 확인해봅니다. 몇 탐사선들이 천체 클래스에 접근하여 정보를 가져옵니다. 보이저 2호는 아직 나사 직원들이 쏘아 올리지 않았군요.

생명있음 인터페이스의 Static 멤버들을 통해 생명에 대해 고뇌하는 신의 모습입니다.

생명들에 대해 살펴봅시다.

나사 직원들이 보이저 2호를 낮은 확률을 뚫고 발사 성공시켰군요! 이제 보이저 2호의 조사를 시작할 수 있습니다.

세상에 하나밖에 없는 은체를 탄생시켰습니다. 나사직원에게 천체에 대해 질문합니다.


SomeWhereSpace 패키지

외계인main클래스와 콘솔 실행창


사용한 것

!캡슐화/추상화/상속/다형성/모듈화!

 

인터페이스⭕️

- public static final 변수⭕️

-public abstract 추상 메서드⭕️

- 디폴트 메서드⭕️

- 정적 메서드⭕️

- private 메서드 ⭕️

-private static 메서드⭕️

+다중상속⭕️

 

오버라이딩⭕️

+ 어노테이션⭕️

 

오버로딩

+생성자 오버로딩⭕️

 

다운캐스팅

업캐스팅

 

싱글톤 패턴⭕️

 

템플릿 메소드⭕️

 

접근제한자(클래스/메소드)

public⭕️ / private⭕️ / none⭕️ / protected

+ Getter Setter 쓰기 ⭕️

 

추상클래스(메소드)⭕️

 

Static⭕️

final⭕️

super()⭕️ - 좀 더 

instanceof

 

+JDK기본클래스 활용 ⭕️

 

+거대메소드/중복코드가 많이 발생되지 않도록 주의

'💾 Backend > 자바' 카테고리의 다른 글

💖자바 제네릭💖  (2) 2023.05.19
💖자바 예외‼️ 처리💖  (0) 2023.05.11
💖자바 JDK 제공 기본 클래스💖  (1) 2023.05.09
💖객체지향 코딩하기💖  (0) 2023.05.08
자바 공부 정권지르기!👊  (2) 2022.12.21