항해 2주차 WIL List
알고리즘
알고리즘을 풀면서 느꼈던 것
- 문제를 잘 읽고 파악하기
문제를 너무 빠르게 읽어 놓치는 부분들이 있었고, 알고리즘 문제의 방향과 다르게 코드를 작성하게 되어 시간을 많이 뺏겼었다. 너무 길거나 어려워 보이는 문제는 요구사항을 단순하게 정의하여 문제를 해석하는데 시간이 소비되지 않도록 해야겠다.
- 가만히 있지 않기
입출력 테스트에 필요한 코드를 습관적으로 작성하고, 필요한 변수나 자료구조에 대해서 정리도 필요한 것을 배웠다. 그리고 막연하게 모르겠다 생각하지 말고 어디서 막히거나 이해가 안가는지 생각을 하여 문제를 해결 하도록 해야겠다.
- 변수명 대충 쓰지 않기
이 부분은 알고리즘 뿐만이 아니라 개발을 진행할 때도 필요한 부분이다. 어떻게 쓰이는 변수인지 최대한 알기 쉽고 구체적으로 변수명을 지정하여 시간을 낭비하지 않도록 해야겠다.
객체지향 프로그래밍이란?
객체지향 프로그래밍이란 OOP(Oriental Objected Programing)라고 하며 프로그래밍에서 필요한 데이터를 추상화 시켜 상태와 행위를 객체로 만들고 객체들간의 상호작용을 통해 로직을 구성하는 프로그래밍 방법이다.
객체란?
그렇다면 객체란 무엇인가? 객체는 우리가 흔히보는 자동차, 핸드폰, 펜, 책 등등 보이는 사물부터 보이지 않는 추상적인 것들 생산, 주문, 배송 등등 까지도 객체로 볼 수 있다.
객체의 구성
객체는 속성과 기능으로 구성되어 있다. 자동차라는 객체를 예를 들면 속성으로는 색깔, 차종 같은 것들이 있을 것이고 기능으로는 엑셀, 브레이크, 기어변속 등등이 있다.
자바에서 속성은 필드, 기능은 메서드라고 한다.
객체지향 프로그래밍 장단점
장점
- 코드의 재사용성이 용이하다.
- 코드의 관리가 용이하다.
- 신뢰성이 높은 프로그래밍을 가능하게 한다.
단점
- 처리속도가 상대적으로 느리다.
- 객체의 수가 많아짐에 따라 용량이 커질 수 있다.
- 설계 시 많은 시간과 노력이 필요하게 될 수 있다.
JVM
JVM은 Java Virtual Machine을 줄인 것으로 직역하면 자바를 실행하기 위한 가상기계라고 합니다. 자바로 작성된 애플리케이션은 모두 이 JVM에서만 실행되기 때문에 애플리케이션이 실행되기 위해서는 반드시 JVM이 필요합니다. 일반 애플리케이션의코드는 OS만 거치고 하드웨어로 전달되는데 비해 Java애플리케이션은 JVM을 한 번 더 거치기 때문에 그리고 하드웨어에 맞게 완전히 컴파일된 상태가 아니고 실행 시에 해석되기 때문에 속도가 느리다는 단점을 가지고 있지만 요즘엔 바이트코드를 하드웨어의 기계어로 바로 변환해주는 JIT컴파일러와 향상된 최적화 기술이 적용되어서 속도의 격차를 많이 줄였다.
참고
https://jongminfire.dev/%EA%B0%9D%EC%B2%B4%EC%A7%80%ED%96%A5-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%EC%9D%B4%EB%9E%80