어셈블리어
*어셈블리어(영어: assembly language) 또는 어셈블러 언어(assembler language)[1]는 기계어와 일대일 대응이 되는 컴퓨터 프로그래밍의 저급 언어이다.*
- 컴퓨터가 이해하는 언어인 0,1 이 아닌 기계어 명령어와 일상용어를 1:1 매칭한 코드표로 코드를 작성함
글쓴이가 주장하는 학습 방법 :
객체 지향을 이해해야 올바른 자바 프로그램을 만들 수 있고 스프링까지 이해할 수 있다.
어떤 언어에 녹아든 개념을 이해하기 위해서 개념부터 공부할 게 아니라 언어에 녹아 들어 있는 개념을 찾아 이해해보라.
→ JDK 를 이용해 개발된 프로그램은 JRE 에 의해 가상 컴퓨터인 JVM 상에서 구동된다.
JVM 의 메모리 구조 : 더 세분화해야 되지만 대표적인 영역은 3가지가 있음
구조적 프로그래밍에서 함수를 도입하며 코드는 논리적 단위로 구분하고 분할해서 정복하였다.
그런데 패러다임이 또 등장했다. 우리가 사물을 인지하는 방식대로 프로그래밍하자는 것이다.
그것이 객체지향이다. 객체지향은 직관적이다.
인간의 인지법
클래스 & 객체 차이
클래스 : 객체
펭귄 : 뽀로로
사람 : 김연아
구체적인것을 분해해서 관찰자가 관심 있는 특성만 가지고 재조합하는 것
추상화란 구체적인 것을 분해해서 관심 영역(애플리케이션 경계, Application Boundary) 에 있는 특성만 가지고 재조합하는 것 = 모델링
예시 : 병원 어플리케이션에서 정형외과 손님, 신경외과 손님, 산부인과 손님은 환자로 분류할 수 있으며 환자만의 속성과 행위를 뽑아낼 수 있다.
모델 : 추상화를 통해 실제 사물을 단순하게 묘사하는 것. 모델은 자바 언어에서 클래스로 표현된다.
추상화의 결과는 클래스다
추상화 = 모델링 = 자바의 class 키워드
추상화와 메모리
클래스 멤버 : 스태틱 영역에 할당된다. 모든 객체가 공통으로 지니는 속성이기 때문이다.
객체마다 중복된 값을 위한 메모리 공간을 할당할 필요 없이 스태틱 영역에 할당하면 모든 객체가 공유할 수 있다.
객체 멤버 : 스태틱 영역에는 이름 정보만 있고 값은 힙 영역에 할당된다. 값은 객체마다 다를 수 있다.
→ is a
is kind of
확장, 세분화, 슈퍼 클래스 - 서브 클래스
상속의 개념은 조직도나 계층도가 아닌 분류도다.
아버지는 할아버지다 ?
참새는 조류다 ?
상속과 인터페이스
is able to
인터페이스상위 클래스는 물려줄 특성이 풍성할수록 좋고, 인터페이스는 구현을 강제할 메서드의 개수가 적을수록 좋다.
상속의 T 메모리
클래스명.정적멤버
형식으로 접근하다. 일관된 형식으로 접근하기 위함이다. 메모리의 물리적 접근방법에 따른 이유도 있다.// 클래스명.정적멤버 형식으로 접근할 때
double pi = Circle.PI;
// 객체참조변수.정적멤버 형식으로 접근할 때
Circle circle = new Circle();
double pi1 = circle.PI;
클래스명으로 접근하면 스태틱 영역을 바로 참조하지만, 객체 참조변수로 접근하면 힙 영역 → 스태틱 영역 순으로 참조하게 된다.