노베이스 지방 국비충
오늘은 추상 클래스를 복습하고
이전 강사님에게선 안 배운 쓰레드를 배웠음
추상 클래스 예제로 동물 - 포유류 - 강아지, 고양이 ... 이런식으로 틀을 잡고
이를 활용하는 프로그램을 짜는게 오늘 과제였음
도중에 내가 메인단에서 mom.getSon().getClass() 하면 Animals.Dogs 로 찍히는데
바로 아래다가 Dogs son = mom.getSon() 하면 getSon 이 오브젝트래요 오또케
하니까 강사님이 웬일로 설계도 안 짜고 코딩부터 하는
내 코드 가져가서 보시더니 답에 근접한 힌트 주셔서 깨우침
포유류 - 강아지, 고양이 이 관계에서
포유류 추상 클래스를 제네릭으로 선언하고
자식 클래스에서 포유류 클래스를 상속, 리턴해줄때
강제 캐스팅 없이 바로바로 꺼내지게 하려면
public class Dogs extends Mamalia<Dogs> 이런 식으로 상속해야 하더라
기초가 단단히 잡혀있으면 개발자적으로 사고해서 금방 해결할 문제인데
기초가 안 잡혀있으면 이런거 검색해도 못 해결한다고 하시는데
실제로 검색해도 강제 캐스팅해라, 겟 메소드에 뺑끼 부려라
이딴게 스택 오버 플로우에서 추천 존나 받은 답변으로 달려 있어서
내가 원하는대로 해결 못하는거였는데 엄청 멋있어보였음
제네릭을 안 배우고 자습해서 하는거라 도움 못 받았으면 해결 못했을듯
어제 드래그 레이싱 대충 생성, 레이싱까진 구현했으니까
강사님이 예시로 든 달리기 경주 이런건 똑같은거라
뭐하지 뭐하지 하다가 번뜩 좋은 아이디어가 떠오름
2차원 배열을 사냥터로 지정하고 사냥터에 먹이 배치는 랜덤으로 지정함
그리고 엄마-아들 객체로 묶어 댕댕이와 떼껄룩을 생성하고
엄마들이 열심히 사냥터를 랜덤하게 뛰어다니면서 먹이를 찾고 아들 객체한테 먹여서
최종적으로 누가 누가 자식한테 밥을 더 많이 멕였나를 겨루는
사냥 대회 프로그램을 짜기로 했음
처음에는 쓰레드를 안 배우고 걍 싱글 쓰레드 while 문 하나로 돌아가게 짰는데
강사님 쓰레드 강의 대충 들으면서 이것이 자바다 책 자습해서
두 개의 쓰레드가 하나의 공유 객체 클래스를 가지고 번갈아가면서 작동하게 바꿈
abstract class Animals implement AnimalMoves
ㅣㅣ
abstract class Mamalia<T> implement MamaliaMoves
ㅣㅣ
class Dogs extends Mamalia<T> 이런 구조임
Main thread
[DogThread, CatThread]
ㅣㅣ
공유 객체 Synchro
쓰레드 구조는 저럼
짤은 메인이랑 synchro 고
아래 움짤은 실제로 돌아가는거
짤은 편집해서 빠르고, 스킵된 부분이 있는데
원래 저렇게 빠르진 않고 sleep 텀 줘서 차근차근 실행됨
짤에 있는진 모르겠는데 엄마 댕댕이랑 껄룩이 같은 자리에 모여도 모여있게 표현해줌
꿀잼 ㅋㅋ
귀엽네
이런거 디시에 쓰지말고 블로그에다가 올려 취업할떄 도움될텐데
노션에다가 이렇게 세세하게단 안 적고 대충 그날 했던 파일 업로드하고 몇문장 끄적여두긴하는데 나중에 취업용 포폴 만들 때 면접관이 한눈에 성장 과정 읽을 수 있도록 정리하긴 해야겠음
노션에다가도 이렇게 스샷도 올리고 좀더 다듬어서 세세하게 올려. 왜 반대로 하노 여기다가 그냥 몇문장 끄적이지,
기록하는거랑 거리가 먼 인생을 살아와서 그럼... 근데 디시에 똥글은 잘 싸는게 아이러니함
해당 댓글은 삭제되었습니다.
실체가 있는 Dogs 클래스가 추상 클래스인 Mamalia (포유류) 를 상속한다구
abstract class Mamalia implement MamaliaMoves 이런 클래스가 있지 얘는 추상 클래스라 안에 필드만 있는 빈 껍데기임
< 괄호들 사라지네 하튼 Mamalia 는 제네릭 클래스임
걍 내가 클래스 파일들 찍어서 새로 글 써줄께
https://gall.dcinside.com/board/view/?id=programming&no=2472206&page=1