1. 알고리즘
알고리즘 주차가 되어 많은 문제를 풀었다. 자바 어법을 통해 프로그래머스 1단계를 주로 풀며 해당 문제에 맞는 자바 어법을 어떻게 사용하고 어떤 함수가 필요한지 알아보면서 해결한 문제 방법이 어떤 시간 복잡도를 가지는지에 대해 깊은 생각을 가질 수 있는 주차였다. 필자는 for문과 if문을 주로 생각하며 문제를 풀었지만 이 외에도 형변환, 동적배열과 정적배열의 핵심적인 역할과 해당 데이터 타입이 지니는 함수 등등 내가 알지 못했던 많은 함수들이 존재하여 필자를 당황케했고 많은 배움을 갖는 시간이었다.
valueOf()를 통해 형변환을 하고 charAt()을 통해 캐릭터 배열을 만들고 arraylist를 통해 동적배열을 생성하며 substring을 통해 문자열 인덱싱을 하는 등등... 설명하고 싶은 함수가 너무 많지만 오늘의 메인 주제가 아니니 생략하겠다.
2. 본격적인 스프링 시작, 객체지향프로그래밍과 JVM
드디어 본격적인 스프링 강의를 배우기에 앞서 객체지향프로그래밍의 뜻과 이것의 전체적인 구조를 개념삼아 배우기 시작했다. 필자는 작년에 배운 개념이라 헷갈리고 있었는데 이번에 WIL과 과제를 진행하면서 다시 한 번 기억을 상기시키는 계기가 된 것 같다.
OOP(Object Oreiented Programming)
객체지향 프로그래밍은 기능들을 클래스라는 하나의 객체 안에 묶어 그 행위(메소드)나 데이터들을 정리하여 호출하면서 서로 간의 상호작용을 통해 알고리즘을 구성하는 프로그래밍 방식이다. 이러한 객체지향 프로그래밍은 현재 우리가 사용하는 대부분의 서비스들이 고객과 서비스 대상 등 여러가지 객체와 그에 맞는 상호작용을 통해 구조를 완성하고 있다. 자바는 대표적인 객체지향형 언어로서 많은 곳에서 사용 중이다. 프로그램 내부의 각 객체들이 어떠한 활동과 데이터를 가지고 이것이 어떻게 프로그램 내부에서 호출되어 사용하느냐가 중점인 OOP는 그 전에 존재하던 절차적 프로그래밍의 단순히 위에서 아래로 프로그램이 실행된다는 개념을 확장하여 현대 대부분의 IT 서비스들의 구조가 되었다.
캡슐화, 상속, 추상화, 다형성
아마 대부분의 객체지향 프로그래밍은 대부분 위 4개의 특징을 띄고 이에 맞게 설계가 되고 있다.
캡슐화 : 필드와 메소드를 클래스로 묶는 데이터 캡슐화, 외부에서 객체의 필드를 변형하지 못하도록 하는 은닉화
상속: 자식 클래스가 부모 클래스를 물려받고 기능을 추가하여 확장하는 개념, 슈퍼클래스와 서브클래스라고도 한다.
추상화: 상세한 정보를 기술하지 않고 필요성의 의해 있어야할 정보만을 간추려서 구성하고 상속을 받는 자식클래스에서 구체화를 하는 것을 말한다. 대표적인 예로 추상 클래스와 인터페이스가 존재한다.
다형성: 오버라이딩과 오버로딩이라는 방법의 총체적인 개념으로 부모 클래스에서 구현된 메소드를 자식 클래스에서 동일한 이름으로 재작성하거나 클래스 내에서 파라미터 값을 다르게하여 동일한 이름의 메소드를 여러개 만드는 것이다.
JVM
JVM은 Java Virtual Machine의 약자로 자바를 실행시키기 위한 가상 기계이다. 자바는 OS에 종속되지 않기 떄문에 OS 위에서 자바를 실행시키기 위해 CPU가 자바를 인식하고 실행하도록 하는 가상 컴퓨터이다.자바 소스코드 자체는 프로세서가 인식을 못하므로 기계어로 컴파일 해줘야하는데 자바 소스코드는 JVM이 인식 할 수 있는데 자바 컴파일러를 통해 자바 바이트코드로 변환되고 이를 읽은 JVM이 기계어로 번역하여 프로세서에 전달하는 것이다. JVM은 OS에 종속적이지 않고 자바파일 하나로 어느 디바이스든 돌아갈 수 있도록 만들어준다.
본격적인 스프링 시작
솔직히.... 좀 어렵다 ㅋㅋㅋ 내가 아는 자바가 아닌 느낌? 프레임워크이기 떄문에 스프링이 원하는 문법이 존재하고 이에 맞추어 진행하려하니 많은 시행착오도 겪으면서 데이터베이스 연결부터 컨트롤러 설계까지 많은 것을 배우고 있다. 내일이면 스프링 고급 강의 또한 도전해 볼 생각이다. 과제는 백엔드는 다 만들었지만 프론트에 약한 필자가 과연 할 수 있을지... ㅋㅋㅋㅋ 항해99가 본격적으로 시작되는 분위기이다. 스프링을 하루빨리 마스터하여 서버부터 데이터베이스까지 총체적으로 다룰 수 있으면 좋겠다. 화이팅~
'항해99 7기 활동' 카테고리의 다른 글
항해99 4주차 WIL (0) | 2022.06.05 |
---|---|
항해99 3주차 WIL (0) | 2022.05.29 |
항해99 3주차 스프링 입문 S.A (0) | 2022.05.20 |
항해99 1주차 WIL (2) | 2022.05.15 |
항해 99 사전 스터디 작업 기록(회원 가입 프론트 및 백엔드 작업) (0) | 2022.04.20 |