#2
객체 지향 프로그래밍이란?
객체(object) : 모든 사물을 의미한다. C++에서 객체를 의미하는 것은 각 변수들
도 객체로 취급할 수도 있다. 하지만 객체지향 프로그래밍을 지원하기 위해 제공
되는 수단은 Class 이다. class는 객체가 아니다. class는 객체를 만들기 위한
틀이다.
객체지향 프로그래밍 : 객체들의 관계를 설정해주어서 부품을 조립하듯이
객체들을 조립하여 완성된 프로그램을 만들어나가는 방식이다.
(OOP : Object Oriented Programming)
클래스의 4가지 속성
캡슐화 : 클래스 안에 속하는 여러 변수 혹은 함수를 하나의 클래스로 묶어주는
기능을 말한다.
은닉화 : 클래스 안에 속하는 변수 혹은 함수를 내가 원하는 부분만 외부에
공개하고 외부에 공개하지 않을 수 있다.
- public : 클래스 내부와 외부에서 모두 접근 가능한 방법이다.
- protected : 클래스 외부에서는 접근이 불가능하고 자기자신 내부나 자식
클래스 내부에서는 접근이 가능한 방법이다.
- private : 자기자신 내부에서만 접근이 가능하고 외부나 자식 내부에서는
접근이 불가능한 방법이다.
상속성 : 클래스는 클래스와 클래스간의 부모, 자식 관계를 형성할 수 있다.
자식 클래스는 부모클래스의 멤버를 물려받아 자신의 것처럼 사용할 수 있다.
단, private으로 되어 있는 멤버에는 접근이 불가능하다.
다형성 : 부모 자식관계로 상속관계가 형성되어 있는 클래스간에 서로 형변환이
가능한 성질을 말한다.
위의 속성들처럼 오늘날의 눈에 보이는 현실을 모방하여 프로그램을 설계해 나가는 데에 필요한 방식 정도로
객체 지향 프로그래밍(Object Oriented Programming)을 이해하면 될 것 같다.
JVM (Java Virtual Machine)
자바 가상 머신
자바를 OS 가리지 않고 실행할 수 있게 해주는 번역기 같은 녀석이다
컴퓨터는 0과 1만 이해하는 바보이므로 CPU와 OS 사이에 자리잡고 앉아 어떤 바이너리 코드 혹은 바이트 코드가 오든 중간에 가로채서 번역을 해줄만 한 친구가 있어야 기계가 알아듣고 명령을 수행해줄 수 있다
JVM은 중간 과정에서 이 둘간의 대화를 인터프리팅 해서 OS를 무시하고 CPU가 이해할 수 있는 바이너리 코드 명령으로 번역해 주거나 CPU가 돌려주는 기계어 결과를 번역해 자신을 사용하는 OS에 알려준다
c로 개발하면 귀찮게 앱을 사용하는 어디에 있는 누군가의 하드웨어에 닷넷프레임워크나 c개발에 사용된 런타임 라이브러리 등을 깔아줘야 실행시켜줄 수 있기 때문에 JVM은 아주 좋은 시스템이다.(window 사용자라면 당장 프로그램 추가/제거에 가서 microsoft만 쳐봐도 주르륵 나오는거 보면 알 수 있다)