1장
jvm > jre > jdk -v
라이브러리 : 내가 만든 것이 아님
ex) 스캐너, 랜덤, string 메서드 등
tool) 우리는 intellij를 배웠음. 회사가서는 다른 툴을 쓸 것임
javac와 java.exe의 차이
: 아마 자바컴파일러와 자바 실행파일???느낌쓰-v
2장
변수와 자료형
연산자
조건문, 반복문, 배열
if-else
for문
배열
클래스와 객체
객체를 만들기 위해 클래스만듦?-v
클래스(설계도),
설계도 = object 객체 // class도 객체
추상은 객체x(new할 수 x)
new class : 객체 (힙)메모리에 뜸-v
-힙은 동적임 : 원하는 시점에 동적으로 띄울 수 있다.
heap 생성 : new
heap 소멸 : 가비지컬랙션이 함. 그래서 신경x
정적]
메모리에 정적으로 뜬다.
한 번 띄우고 변하지 않는 것(상수 같은 의미)
메인 시작 전에 뜨고 메인 끝날 때 끝.
class변수들 : 상태
상태
=class 변수 = (new해서) heap 변수 = class의 member 변수 = field
(우리 홈에-v) 변하지 않는 것 : final
변하는 것 : private-v // 변하는 것은 get/set
ex) 몸무게~ 메소드(행위) 통해 변경.
~set 만들 때는 의미 있는 이름으로 만들기
ex) set몸무게 : 추천x . 대신 달리기, 걷기 등 정확한 메서드 이름이 좋음
상태는 행위로 바꾼다.
상태 private 이면 public메서드로 변경하고 overload를 많이 사용하여 초기화한다.
동전, 지폐, 카드 등을 인수 = 파라미터라고 한다. _메서드 오버로딩으로 사용多.
라이브러리 _ 오버라이드 많이 사용-v
SOLID(Clean code, 마틴? 핵심 내용)
OCP
overload : 기존 코드에 새로운 메서드를 추가하면 기존 class 내용 변경되는 꼴인데 그것은 OCP가 X
만약) int) ooo 문자열) “ ooo” 하면 추가할 때마다 if else붙음→ 수정함-v
-메서드 재정의
-동적바인딩
OCP : 확장에는 열려 있고 기존코드 손대는 것에 대해 폐쇄적.
EX) 상속을 하면 새로운 캐릭터를 만들면, (실수 등으로) 오타 가능성이 있다.
⇒ 추상화/Interface로 만들어 실수확률을 줄인다.
ocp
새로운 class를 만드는 것에 대해 open ex)scout 캐릭터, 어떤 캐릭터 추가하는 것들은 okay
기존 코드에 손대는 것에 대해 폐쇄 ex) protoss를 수정하지 x
디자인패턴 배울 때쯤 LSP 제대로 이해 가능. 지금은 몰라도 OKAY
interface : 행위 제약.
ex) 차의 엑셀 (자동차설계자가 제약을 건 것.)
만약, 미래의 자율주행 자동차가 만들어져 기존의 interface엑셀을 빼고 설계를 할 수 있다. (지금의 interface여야 했던 것들이 미래에 추후 변할 수 있다.)
구현하는 사람은 interface이유는 알 필요x
(나중에 레벨이 어느정도 되면 설계자와 이것은 왜 빼고 다른 것은 추가하였는지 talk talk 가능.)
(interface 만들어준 사람 뜻대로 하면 됨.-v)
Isp
interfece : 제약행위
ex) 엑셀, 브레이크 있을 수 있음
“여러 개 말고 한 개만 들고 있어라”
-어댑터 패턴-v
+) 자바 1.8? 최근 문법에서
interface가 default 몸체를 가져도 okay-v
isp : interface 1개당 기능 1개만 만들어라. 그리고 필요 시, interface 여러 개 만들어라.
(메서드1에 책임 1, 따로 쓰자)
ex) cookable / knifeable로 분리해서 만들자. food하나로 묶지말고
Share article