C언어
유지보수가 어렵고 프로그램의 순서가 바뀌면 동일한 결과를 보장할 수 없음
C++, Java
기능별로 코드를 묶어 중복을 제거
메소드를 통해서만 접근이 가능
캡슐화, 상속, 다형성
Java는 메모리를 할당하는 기능은 있지만 메모리를 반환하는 기능은 없음
JVM의 GC 기능이 프로그램 내 사용되지 않는 메모리, 가비지를 자동으로 회수한다.
❗️내부 stack frame에서 외부 stack frame의 변수에 접근하는 것은 가능
BUT 외부 stack frame에서 내부 stack frame의 변수에 접근하는 것은 불가능
여는 중괄호 { 를 만나면 메소드를 위한 stack frame이 stack 영역에 할당되고,
닫는 중괄호 } 를 만나 메소드가 종료되면 stack frame이 소멸된다.
[+]
절차지향 프로그래밍은 객체지향 프로그래밍의 반대 개념이다 - X
절차지향과 객체지향을 구분하는 방법으론 상속, 다형성의 유무가 있다. - O
다음 상황에 대해 답하시오.
Integer a = 500;
Integer b = 500;
(1) a와 b는 모두 스택 메모리 영역에 저장공간을 확보한다.
(2) a.equals(b) 는 참이다 - O. 값 비교 결과 서로 같다.
(3) a == b 는 참이다 - X. 주소 비교 결과 서로 다르다.
객체지향 프로그램의 단점은 무엇인가?
설계에 많은 시간이 걸리고, 처리속도가 느리다.
도서: 스프링 입문을 위한 자바 객체지향의 원리와 이해 (김종민, 위키북스)