Day17 - Quiz를 풀어 봅시다

2021. 3. 10. 10:20JAVA 공부/Quiz

오늘은 대면 수업하는 날 입니다 ~~

그런데, 저희 조에서 저만 학원에 나와 있네요...

우리 조원 분들 어디갔나요 ~~~~~~~~~ 돌아오세요 ~~~~~~~~~~ ㅠㅠㅠㅠㅠ

 

오늘은, 어제 배웠던 static , abstract 가 어려웠기 때문에, 약 30분 정도 같이 복습을 해주셨어요 ~~

그리고 진도를 나가지 않고, 바로 quiz를 내주셨답니다.

그럼 같이 quiz를 풀어 볼까요?

 

- 추상화 클래스 Shape 를 상속받아서 Circle , Rect 를 만들어라

- 원형은 생성될 때, 이름과 변의 길이를 받을 것

- getArea()는 원의 넓이를 반환하도록 오버라이딩

- PI 는 상수형태로 선언

- main 에서 이름과 넓이를 출력할 것

추상클래스 Shape 는 선생님이 만들어 주셨습니다.

우리는 Circle 와 Rect 만 만들면 되요 ~

Circle 먼저 만들어 봅시다.

부모 클래스 Shape 는 기본 생성자가 없기 때문에, super 를 이용해서, Shape에 있는 생성자를 똑같이 사용해 주면 됩니다. String name 을 넣어주면 되죠? 거기에 radius 까지 받아서 넣어 줍시다

 

getArea() 오버라이딩은 그냥 원의 넓이 구하는 공식 써서 해주면 됩니다.

※ 저는 수학을 잘 못해서(문과에요 ㅠㅠ) google링 했습니다 하하하하

 

PI 는 어제 배웠던 static final 을 같이 써서 상수화 해주면 됩니다 ~

 

Circle를 다 만들었으니 Rect를 만들어 봅시다. Rect도 비슷해요 ~

사실 Circle 랑 다를게 없죠?

저는 오버라이딩 한 getArea() 를 정사각형의 넓이를 구하는데 썻고...

직사각형의 넓이를 구하는 것도 만들어 주고 싶어서 오버로딩 했습니다.

 

넓이 구하는 공식은 검색 !

 

이제 main 에서 써봅시다

원의 넓이, 정사각형의 넓이를 구하는건 오버라이딩만 했기 때문에, 부모인 Shape도 기능이 있어서 그냥 써주면 되는데...

직사각형의 넓이를 구하는건 부모인 Shape에 없죠? 그렇기 때문에 다시 자식클래스인 Rect 로 변환을 시켜야 원하는 메서드를 사용할 수 있습니다. 그래서 ((Rect)_rect) 로 다시 Rect형으로 캐스팅을 한겁니다

 

- StarCraft 게임에 나오는 Unit 마린, 탱크, 드랍쉽 을 구현해라

- 각각의 유닛에 좌표 (x, y) 를 설정하고, 이동하는 Move . 기존 좌표에서 새 좌표까지의 거리를 구하기

- 드랍쉽에는 탱크와 마린을 태우는데, 총 8칸에 마린은 1칸, 탱크는 4칸 차지.. 공간이 있는 경우만 태울 것

 

이 문제 같은 경우는, 코드가 길어질 수 있기 때문에, 일부분만 올리도록 하겠습니다.

저는 멤버변수들을 private 로 선언했기 때문에.... setter / getter 를 만들었습니다

Math.aqrt(값) -> 피타고라스 정리 점과 점사이의 거리를 반환

stop() 메서드는 따로 만들어 줬습니다. 그냥 x와 y의 좌표를 출력하는 메서드에요 ~

 

원래는 다른 기능들 ( attack, death ) 등을 만들려고 하다보니까, 코드들이 좀 정리되지 않은 느낌이 드네요 ~

 

이 외에 interface를 이용한 간단한 quiz 들이 있었습니다.

- interface에 다형성을 연습해보자

- interface 를 매개변수로 받아보자.

저는 객체를 생성하기가 싫고, static 연습도 할겸해서 static으로 만들었습니다.

 

오늘은 quiz를 이정도 풀었는데.... 오버라이딩 하라고 하셔서, 오버라이딩만 헀다가 심심해서 오버로딩도 헀더니 사용하려고 하니까 오류가 났습니다 ㅎㅎㅎㅎ

좀 보다가, 왜 그런지 모르겠어서 쌤을 불러서 물어봤는데...

오버로딩을 했는데, 호출할 때 애매모호 하기 때문 이었습니다.

carePet( new GoldFish() ) 을 할 경우... IPet 인지 Fish 인지 알 수가 없더라구요

그래서, 호출할 때, 하나의 타입을 정해서 매개변수로 넘겨주긴 했는데, 코딩 자체가 모호하지 않게 만드는 게 좋겠다는 생각이 들었습니다 ( 당연한거죠? )

'JAVA 공부 > Quiz' 카테고리의 다른 글

Day19 - Quiz 를 풀어 봅시다  (0) 2021.03.12
Day18 - Quiz 를 풀어 봅시다  (0) 2021.03.11
Day15 - Quiz 를 풀어 봅시다  (0) 2021.03.08
Day14 - Quiz를 풀어 봅시다  (0) 2021.03.06
Day13 - Quiz를 풀어봅시다  (0) 2021.03.04