2021. 3. 10. 10:20ㆍJAVA 공부/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 |