JVM에 대해
JVM에 대해 쉽게 말하자면 자바를 실행하기 위한 가상 컴퓨터라고 할 수 있다.
Java는 OS에 종속되지 않는다는 특징을 가지고 있는데 이러한 특징이 발현되기 위해선 OS보다 위에서 Java를 실행시킬 매개채가 필요하다 이것이 JVM이다.
객체지향 프로그래밍에 대해
객체지향은 현실 세계의 객체를 소프트웨어 객체로 설계하는 것이다.
객체지향적인 프로그래밍을 잘 하려면 기본적으로 객체지향의 3요소를 잘 알아야한다. 객체지향의 3요소는 캡슐화, 상속, 다형성이 있다.
캡슐화
처음에 이 단어를 접했을 때는 당황스러웠다. 혼자 공부하는 자바라는 책에서 아직까지는 접하지 못한 단어였기 때문인데 속뜻을 알고보니 반가웠다. 지금의 나에게는 익숙한 접근제한자와 밀접한 연관이 있기 때문이었다.
캡슐화는 객체 속성을 보호하기 위함이다. 접근 제한자를 통해 이를 보호할 수 있고 속성에 대한 접근은 getter/setter 메소드를 통해 접근한다.
상속
상속은 상위 클래스로 큰 틀을 만들고 자식클래스로 재사용하는 것이다. 재사용성이 늘어나 코드의 중복도 줄어들기 때문에 생산성과 유지보수의 효율이 매우 높아진다. 상속에는 추상클래스, 추상메소드, 오버로딩, 오버라이딩 등 파고들 점이 많기 때문에 따로 한번 정리해야겠다고 생각이 든다. 이번주 개인과제를 끝내면 한번 쭉 정리할 생각이다.
다형성
다형성은 상속과 밀접한 관계가 있다. 상속받은 메소드를 자식 클래스에서 재정의해서 오버라이딩하면 이걸 객체지향의 다형성이라고 볼 수 있다. 쉽게 말해 동일한 타입을 가진 여러 객체가 같은 속성을 가지는 성질이다.
느낀점
개인적으로 객체지향이 뭔지 어떻게 사용하는지는 전부는 아니지만 조금씩 조금씩 이해되는 상태이다. 특히 개인 SA과제가 많은 도움이 됐다. 처음엔 하나의 클래스의 상속없이 코드를 써내려갔는데 ( 과제를 잘 이해하지 못한 탓이다 ) 객체지향적이지 못한 첫번째 결과물이 나왔다. 기술매니저님께 피드백도 받고 담임매니저님도 자주 찾아가 질문해서 문제의 의도를 파악, 해결하였다. 해결하고나니 정말 재미있었다. 코드의 길이는 자연스레 엄청 줄어들었고 무엇보다 코드가 직관적이었다. 과제에 오버로딩과 오버라이딩을 사용해보지 못해서 언제 사용하는지 이해가 아직 덜 된 것 같지만 개인과제가 일찍 끝나면 오버로딩과 오버라이딩도 연습코드를 통해 써봐야겠다고 생각했다.