객체 지향 프로그래밍은 문제를 여러개의 객체 단위로 나눠 작업하는 방식
어제 공부했던 객체 지향 언어의 장점과 같다
코드의 재사용성이 높다.
코드의 관리가 용이하다.
신뢰성이 높은 프로그래밍을 가능하게 한다.
객체란 물리적으로 존재 하거나, 추상적인것 중에서 자신의 속성과 동작을 가지는 것이며 속성과 메소드로 구성된 자바 객체로 모델링 된다.
집합관계 - 완성품과 부품의 관계
사용관계 - 객체가 다른 객체를 사용하는 관계
상속 관계: 종류 객체와 국체적인 사물 객체 관계
추상화(Abstraction)
객체에서 공통된 속성과 행위를 추출하는것
ex) 무기 클래스 - 칼 클래스, 삽 클래스, 총 클래스, 활 클래스
캡슐화(encapsulation)
연관 있는 변수와 메소드를 묶어주는 작업
접근 제어 지시자(public, private, protected)를 통해 정보 은닉을 해주고, 프로그램이 외부 클래스에 의존적이지 않게 정보은닉을 통해 결합도를 낮추고 응집도를 높여 주어서 변경이나 오류에 취약해지지 않도록 한다.
상속(Inheritance)
부모클래스의 속성과 기능을 이어 받아 사용하는것
중복 기능을 반복하여 작업하지 않고 작업을 할수 있게 해준다.
다형성(Polymorphism)
상속 받은 기능을 다형성을 통해 변경하여 사용할 수 있다.
프로그래밍 언어의 자료형 체계의 성질을 나타내는 것으로, 동일한 변수, 함수명 등이 다양한 방법으로 기능하는 것을 말하며 오버라이딩, 오버로딩이라 형태로 제공된다.
Java Virtual Machine의 줄임말로 Java Byte Code를 OS에 맞게 해석해주는 역할을 한다. Java Compiler가 .java파일을 Java byte code로 변환해주면 기계어가 아닌 Java byte code를 OS가 이해할수 있도록 JVM에서 해석 해준다. Byte Code는 JVM 위에서 OS 상관없이 실행되기 때문에 OS에 종속적이지 않고 자바 파일을 하나만 만들면 어느 디바이스든 JVM 위에서 실행 할 수 있는 장점을 가지고 있다.
3가지 주요 영역(method area, call stack, heap)
메서드 영역
프로그램 실행 중 어떤 클래스가 사용되면, JVM은 해당 클래스의 클래스파일을 읽어서 분석하여 클래스에 대한 정보를 이 곳에 저장한다. 이 때, 그 클래스의 클래스 변수도 이 영역에 함께 생성된다.
힙
인스턴스가 생성된느, 공강, 프로그램 실행 중 생성되는 인스턴스는 모두 이곳에 생성된다.인스턴스 변수들이 생성되는 곳이다.
호출 스택
호출 스택은 메서드의 작업에 필요한 메모리 공간을 제공한다. 메서드가 작업을 마치면 할당되었던 메모리공간은 반환되어 비워진다.
호출 스택의 특징
이번주에는 코딩테스트 연습을 많이 하여서 문제 풀이를 거의 70문제 넘게 풀이를 하였는데 집중해서 그룹 스터디로 진행하니 실력이 는게 느껴졌다. 아직 여전히 가야할 길은 멀지만, 혼자서 거의 100문제를 풀고도 실력이 는게 느껴지지 않았던 지난 세월보다는 이번 한주는 확실히 뿌듯했다. 이번주는 아쉬운점은 특별히 없었다. 커리큘럼에 대한 불만족으로 몇몇 수강생들은 아쉬운 한주라고 했지만, 전공자 입장에서는 만족스런 한주 였다. 다음주 주특기 교육이 기대된다.