-- Index --
변수 | 연산자 | 제어문 | 배열 |
객체 | 클래스 | 상속 | String |
변수 초기화
- 변수 초기화 ( 만들자 마자 값을 주는 것은 초기화 )
- 선언과 초기화 따로 할때는 선언 초기화 따로
연산자 / 제어문
배열 / 2차원 배열
- 1차원 배열의 공간에는 값이 들어있다
- 2차원 배열의 공간에는 다른 배열(2차원배열)의 주소값을 가지고 있다 - 참조 변수다.
- 보라색은 보라색 만들어짐 / 초록색은 초록색 만들어짐
객체
- class 와 object 의 차이를 알면 끝!
붕어빵 틀 vs 붕어빵
자동차 설계도 vs 자동차
# class
- 변수를 여러개 만들어서 사용하는게 귀찮아서 사용하던게 array
- array는 타입이 같은 것만 관리 가능하다.
- 서로 타입이 달라도 여러개의 변수 한 번에 관리하고 싶다 해서 등장한 것이 – structor(구조체)
- 변수 생성/묶음의 structor에 method를 더한 것이 class!
클래스 기본 구성
1. getter / setter
- alt + shift + s – 게터/세터
- 게터/세터 만들어 놓으면 public 과 똑같은데 굳이 만들어서 사용한 이유는?
- --> 입력하려는 값에 대해 입력 전에 검사 조건 만들 수 있다.
- --> 출력 return 값도 조정가능~
2. 생성자 - constructor
- alt + shift + s – create constructor
3. toString
## 객체를 바로 출력하면 – 기본적으로 toString() 메서드 호출된다. ##
상속
1. 추상화 – 모든 포켓몬이 가지는 속성 뽑아냈다 - 추상화
1-1. 자식클래스들에게 상속처리
- 피카츄 클래스 에서 작업
- 파이리 / 꼬부기도 똑같이 작업
1-2. 객체 생성 테스트
1-3. 다형성을 이용하여 생성된 객체들 관리하기
- 반복문으로 작업하기 위해 +
- 배열로 관리해주기 위해 +
- 상위타입인 Poketmon 타입으로 만들기
- == 다형성을 이용하여 코드를 작성했다.
2. 추상 메소드 - 추상 클래스
2-1 공격 메소드 skill() 생성
- 공격메소드 [ skill() ]를
- 피카츄/파이리/꼬부기 각각 만들어주면 어떤 문제점?
- 자식에게만 있는 메서드는 사용불가능하다 – 담아놓은 변수의 타입이 Pocketmon이라서
- 부모클래스인 Pocketmon 클래스에 하나 만들어놓고 – 자식타입에서 오버라이드해서 사용
2-2 추상메소드로 만들기 abstract skill()
- # 부모클래스인 Pocketmon이 가지고있는 skill() 메소드는
- 자식들이 무조건 재정의해서 사용하는 메소드
- 구현부 필요없다. - 추상메소드로 만들어주자.
- 추상메소드를 포함하고 있는 클래스는 추상 클래스로 만들어주어야한다.
skill(){}; 이거는 구현부 있는 것이다. 주의할 것
2-3 추상클래스로 만들어야 하는 경우와 만드는 이유
- 왜 추상 클래스가 되어야하는지?
- 객체생성이 안되는 클래스가 추상클래스 – 추상메소드 1개이상 있으면 무조건 추상메소드
- 객체생성을 원하지 않을때는 추상메소드 없어도 추상클래스로 만들 수 있다.
- Pocketmon 클래스로 객체를 만든다? - NO! - 원하지 않는다.
- Pocketmon 객체는 반드시 – 이름/종류/등등을 가지고 태어나야한다.
- 그냥 포켓몬이라는 것은 없다.!
- 추상클래스로는 object만들 수 없다 . - implements 해도 추상메소드 구현할 필요 없다!
- Pocketmon 클래스에서 void Skill() 구현안해도 되는 이유가 이것이다!
2-4 객체 생성안할 건데 왜 만들었나?
- 상속을 위해서 – 상속받아서 생기는 애들에게 까먹지 않도록, 구현강제하도록
- 다형성 적용을 위해서 – 다른 타입애들 모아서 관리하기 위해서
3. 컬렉션
3-1 트레이너에게 포켓몬 주머니 만들어 주기
- List / Set / Map 중에 Map으로 만든 이유?
- List 는 순서대로 하나하나 체크해야한다. / Set은 순서 없다. 일단 꺼내보기
- Map은 정해놓은 이름표보고 꺼내면 된다! / key:value 형식
- Map 만들고 – 주머니 HashMap() 만들어주기 final
3-2 넣고 ( put) , 꺼내서봐보기(get)
- 트레이너 (t)의 - 주머니 (pocket) 에 - (put) 넣기( key,value ); = t.pocket.put()
- key는 이름 value 는 포켓몬
- 트레이너 (t)의 - 주머니( pocket) 에서 - (get) 꺼내보기 ( key ); = t.pocket.get()
3-3 getter / setter 형식으로 바꿔주기
- pocket에 직접 접근해서 넣어주고/가져가고 하는 것이 마음에 안든다.
- >>게터 / 세터 기능으로 접근 제한해 주자.
- >>addPocketmon() 과 getPocketmon() 메서드 생성
- >> 트레이가 자기에게 소중한 포켓몬 주머니를 남에게 get 가져가도록 두지않는다.
3-3-1 트레이너 클래스에서 작업
- 내 주머니(HashMap) - pocket 에 < > 제네릭 걸어주어서 이것만 올 것이다. ( 타입 알려주고 )
- get 메서드 / set 메서드 만들어주고 - return 과 return 타입 지정
# 트레이너 포켓몬 주머니에 포켓몬 집어 넣기 - addPocketmon()
- 포켓몬( p1 ) 생성 후 -
- 트레이너( t )의 포켓몬주머니에 추가 (t.addPocketmon()) 추가
- t.addPocktetmon( p1 ) 형식으로 --- 트레이너의 포켓몬 주머니에 추가해주기
# 트레이너 포켓몬 주머니에 있는 포켓몬 확인 하기 - getPocketmon()
- 트레이너( t )의 포켓몬주머니(pocket)에 특정 포켓몬이 들어있는지 확인하고 싶다.
- 포켓몬(p1)을 넣어줄 때 key값으로 사용했던 p1.name을 ("피카츄") 이용하여 확인하기
- t.getPocketmon("피카츄");
# 트레이너 포켓몬 주머니의 포켓몬 전부! 확인 하기
- 트레이너( t )의 포켓몬주머니(pocket)에 들어있는 포켓몬들 전부 확인하고 싶다.
- printAllpoketmonName() 메소드 생성
- >> 향상된 for문 사용 - key 값을 이용하여 출력하기
String 3개
# String 은 매번 새로운 문자열을 만든다.
# StringBuffer/StringBuilder 는 원래 있는 거에 더해준다 -- 새로운 객체 생성 X
- 이 둘은 동기화가 되어있고 안되어있고 차이
- 버퍼는 동기화처리 되어있다. / 빌더는 동기화처리 안되어있다.
- 동기화처리 하면 속도가 조금 느려진다. -
- 다중 쓰레드 환경이면 버퍼 //// 다중 쓰레드환경 아니면 빌더
- 다중 쓰레드 환경에서는 --- 동시에 작업 못하도록 ---동기화 작업 필요
'Java 기반 클라우드 융합 개발자 과정 - KH 정보교육원 > 7월' 카테고리의 다른 글
22.07.12 - [ 7차 시험! - UI 구현 ] (0) | 2022.07.20 |
---|---|
22.07.11 - [ 복습 ] [ DB ] { 구문 , 함수, 집한 연산자, join, trigger} (0) | 2022.07.20 |
22.07.05 - [jQuery] [요소 탐색(순회) 메소드] , [함수 content 영역], [함수 요소 생성 및 제거] (0) | 2022.07.14 |
22.07.04 - [ jQuery ] , [ 요소선택자 ] = { 기본, 추가, 필터링 - 선택자 }; (0) | 2022.07.14 |
22.07.01 - [ JS ] 생성자함수, 클로저, 프로토타입, BOM, DOM, 이벤트모델 (0) | 2022.07.14 |