(보충) 객체 배열

NA YE SOM·2023년 7월 24일
0

이름과 나이를 가진 한 사람 한 사람 만들어서 꺼내쓰기


-> 디폴트 생성자 (파라미터 없는것)



숫자를 저장할 수 있는 파라미터 필요


-> 배열의 길이가 되었으면 좋겠음
-> 저장할 수 있는 건 person이고 person배열이 있으면 좋겠음

person의 배열 타입

-> 타입 이름 + 대괄호[]


-> 선언만 한것 생성 전임
-> 길이를 알지 못해서 선언만 하고 생성은 못하는 이유


-> 선언과 생성을 분리 시켜놓음


-> family배열의 요소 3개가 만들어짐



-> 개체 필드하고 같은특성
-> 만들어지기만 하면 : 저장되는게 참조타입(Person)은 모두 'NULL'값을 기본으로 가짐
-> 안에 Person은 들어있지 않음


-> 가족수는 바뀌었지만(3명 -> 4명)
SetFamilyCount호출해서 4로 바꾸려고해서 배열의 길이도 늘려야 하는데 -> 배열의 길이가 늘어나는건 불가능하다.

3개짜리 배열 , 4개짜리 배열 따로 만들고
주소 갈아치기하면 됨


-> 새로운 배열 생김

-> family 첫번째 요소부터 familyCount 길이 만큼




-> 임시 배열의 주소값을 family배열이 가져가서 길이를 늘림


-> 가족 배열에 null값이 3개들어있음

디폴트 생성자 + Setter




-> name.length , age.length상관없음

->family배열 꺼내서(getter,setter해놨으니까) -> famliy.getFamily()
(Person 배열타입의 family)
-> familyCOUNT하고


-> familㅛcount = family하고 같음 : familycount를 길이로 쓰고 있으니까

객체 f로 바꾸기

f객체의 getFamily 데이터들은 배열 요소에 집어넣어야 하니까 인덱스 [i] 붙여줌
-> 각 요소에 아무 내용도 없는 Person 채우기


-> 이름하고 나이는 여전히 없음




-> 값은 채워져있으니 getter만 가져오면 됨

-> i번째로 하면 0번째라고 시작해서 보기가 좋지 않음 -> (i + 1)

refactoring 리팩토링 : 코드개선의 대상(같은 것들이 반복되면 느려짐)

-> 최종프로젝트에 사용되지 않음, 약간 위험할 수 있음
(아무리 잘짜고 이미 짜여져있는 자바 클래스를 이길 수 없음)


ex02()


-> person을 3개 만드는 NEW person 의 상태
-> 가족수저장, 가족배열도 만들어짐


->내용을 채워주는 역할을 안해서 setter필요


-> String, int 써서 setter가 필요 없음


-> setter를 호출할 필요가 없음(간결해짐)


-> 배열에 저장된 요소 한개

-> person임

-> getName()을 추가로 붙임(


-> 이름은 마음대로 잡고(family) Person[] 타입 잡기



-> 디폴트생성자로 만들고

family[i] 불러서 이름 집어넣기(setName)

-> 향상 for문
-> 몇번째 가족은 안하는것
-> 몇번쨰 가족인지 알고싶으면 일반 for문쓰기

맡은 업무가 "개발"이면 refactoring은 안하는것이 좋음

유지/보수 업무 : refactoring, 기존에 전체 완성이 된 틀이 있을때: refactoring


-> length 파란색 변수 : 필드값(변수) 참조하는 건 상관없음

-> 나중에)


-> size라는 메소드로 제공하면 (family.size가 3번 호출됨 -> 애초에 이렇게 짜면 안됨)

-- 향상 for문 쓸 때 조심해야 하는 부분


->


-> 2번째 데이터꺼낼때 NULL값을 꺼냄 아무것도 없는데 Null.getName 되는것
여기서 문제 발생


if(p! = null) -> p가 null이 아니면) (nullpointexception 방지위해서 쓰기)

-> 객체는 항상 null값 조심해야 함!
-> 향상 for문 쓸때 if(p! = null) 쓰기!

-> addFamily 메소드 호출 가족 생성, deletFamliy() 호적 빼기

-> 클래스 이름에도 array들어감 (나중에 수정하는 방법도 배움 -> 간단한 프로그램형태로 배울 수 있음)

어려운 것 해봐야 실력이 는다 !

profile
개발자 velog

0개의 댓글