본문 바로가기

Weekend I Learend

항해 2 주차 후기

항해 2 주차는 자바 문법과 친해지기 위한 알고리즘 주차였다.

나는 사실 알고리즘 공부를 조금씩 해왔었다. 개발자 친구가 알고리즘은 한번에 공부해서 되는 것이 아니라 꾸준히 조금씩 해야한다는 조언을 해준적이 있어서 개발일을 할 때도 알고리즘 문제를 종종 풀었었다. 어려운 알고리즘 문제 보다는 기본 자바 문법을 익히는 알고리즘 문제를 풀었었다. 그래서 이번 알고리즘 주차는 큰 어려움은 없었던 것 같다. 다만 같은 문제를 풀고 서로 문제 풀이를 공유하는 시간에서 팀원들이 나와 다른 방법으로 문제를 해결했을 때 배우는 점이 정말 많았던 것 같다. 그 이유는 혼자 했을 때는 비슷한 방법으로만 문제를 해결하려 했기 때문에 비교적 새로운 방법을 시도하지 않으려고 했지만, 팀원들과 함께 알고리즘 공부를 했을 때는 내가 편리한 방법이 아닌 정말 효율적인 방법으로 다양하게 문제를 해결하는 것 같아서이다. 그래서 나의 고정관념을 깨주는 시간도 되었던 것 같다.

 


이번주 공부한 기술

객체지향 프로그래밍이란?

객체 지향 프로그래밍(Object-Oriented Programming, OOP)은 컴퓨터 프로그래밍의 패러다임 중 하나이다. 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다.

객체 지향 프로그래밍은 프로그램을 유연하고 변경이 쉽게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용된다. 또한 프로그래밍을 더 배우기 쉽게 하고 소프트웨어 개발과 보수를 간편하게 하며, 보다 직관적인 코드 분석을 가능하게 하는 장점이 있다. 그러나 지나친 프로그램의 객체화 경향은 실제 세계의 모습을 그대로 반영하지 못한다는 비판을 받기도 한다.

 

  • 내가 만든 객체지향 프로그래밍

나는 과제를 통해 객체지향 프로그래밍을 직접 해보았다.

이번 코딩에는 객체와 상속 그리고 인터페이스를 사용하여 객체지향이 왜 편리한지를 느껴보는 것을 목표로 하였다.

 

먼저 부모 객체인 Transport 라는 객체를 만들어 주었다.

그리고 Bus와 Taxi 객체를 extends를 통해 Transport 객체를 상속해 주었다.

그렇게 되면 Bus와 Taxi는 부모의 정보를 가질 수 있기 때문에 상속 받은 객체에는 부모의 내용을 따로 코딩하지 않아도 된다. 그래서 중복된 변수선언을 줄일 수 있다는 것이 느껴졌다.

 

다음은 인터페이스 2개를 만들어 주었다. 참고로 인터페이스는 코딩해야하는 메소드가 정의되어 있기 때문에 메소드 이름이나 반환형 파라미터를 통일 되게한다. 그래서 인터페이스를 사용하게 되면 협업이 편리해진다.

 

다음은 버스 인터페이스이다.

버스 인터페이스는 3가지의 기능을 구현하도록 만들어져 있다. 

위의 코드는 BusFunction이라는 클래스를 하나 만든 후 implements를 통해 인터페이스를 적용한 코드이다.

클래스에 implements를 하면 인터페이스에서 만든 메소드를 오버라이드하여 만들 수 있게 된다.

 

다음은 Taxi에 관한 기능을 인터페이스 통해 만들었다.

그리고 Bus와 같이 TaxiFunction 클래스에 인터페이스를 적용시켰다.

위의 그림을 보면 Bun기능과 달리 2개의 인터페이스를 implements한 것을 확인 할 수 있다. 자바에서는 여러개의 인터페이스를 하나의 클래스에 적용 할 수 있다.

택시는 기본적으로 버스의 기능도 가지고 있기 때문에 버스 인터페이스와 택시 인터페이스를 implements 했다.

이렇게 인터페이스는 코딩할 때의 틀을 만들어주는 것 뿐만 아니라 재사용성도 유용한 것을 확인 할 수 있었다.

 

https://github.com/yalla12/hanghea99Spring.git

 

JVM이란?

직역하면 '자바를 실행하기 위한 가상 기계(컴퓨터)'라고 할 수 있다.

Java 는 OS에 종속적이지 않다는 특징을 가지고 있다. OS에 종속받지 않고 실행되기 위해선 OS 위에서 Java 를 실행시킬 무언가가 필요하다. 그게 바로 JVM이다.

즉, OS에 종속받지 않고 CPU 가 Java를 인식, 실행할 수 있게 하는 가상 컴퓨터이다.

 

  • JVM 동작 방식

출처 코딩팩토리

  1. 자바로 개발된 프로그램을 실행하면 JVM은 OS로부터 메모리를 할당합니다.
  2. 자바 컴파일러(javac)가 자바 소스코드(.java)를 자바 바이트코드(.class)로 컴파일합니다.
  3. Class Loader를 통해 JVM Runtime Data Area로 로딩합니다.
  4. Runtime Data Area에 로딩 된 .class들은 Execution Engine을 통해 해석합니다.
  5. 해석된 바이트 코드는 Runtime Data Area의 각 영역에 배치되어 수행하며 이 과정에서 Execution Engine에 의해 GC의 작동과 스레드 동기화가 이루어집니다.

'Weekend I Learend' 카테고리의 다른 글

항해 5 주차 후기  (0) 2022.08.21
항해 4 주차 후기  (0) 2022.08.14
항해 3 주차 후기  (0) 2022.07.31
항해 1 주차 후기  (0) 2022.07.17