20220819

jungkwanlee·2022년 8월 19일
0

코딩일지

목록 보기
101/108

1) 학습한 내용

오늘의 할 일

오늘은 팀 프로젝트 자잘한 검사를 하면서 자바를 독학했었다.

이클립스

이클립스는 자바 언어에 최적된 IDE이다. 비주얼 스튜디오 코드나 비주얼 스튜디오로도 할 수 있지만, 개인적으로 이클립스가 자바에 최적화 되어 있어서 따로 배웠다. 이클립스를 통해서 스프링이란 프레임워크를 다루는 데 쓰여지는 게 내 개인적 경험이다.

자바

자바(영어: Java)는 썬 마이크로시스템즈의 제임스 고슬링(James Gosling)과 다른 연구원들이 개발한 객체 지향적 프로그래밍 언어이다. 1991년 그린 프로젝트(Green Project)라는 이름으로 시작해 1995년에 발표했다.

자바의 특징

  1. 객체 지향 언어
    '자바'는 객체 지향 언어의 대표적인 언어이다.

  2. 인터프리터 언어
    자바는 컴파일 언어인 동시에 인터프리터 언어이다. 자바는 텍스트 소스를 컴파일하여 클래스파일로 만든다음 자바 런타임이 클래스 파일을 인터프리트 하면서 실행된다.

  3. 독립적인 플랫폼
    어떤 운영체제라도 독립적으로 자바언어를 사용할 수 있다. 왜냐면, JVM에 의해서 실행되기 때문이다.

  4. 자동 메모리 관리
    자바는 개발자가 직접 메모리에 접근할 수 없으며 자바가 직접 관리한다. 객체 생성시, 자동적으로 메모리 영역을 찾아서 할당. 또한 사용하지 않는 객체를 제거시켜 준다. C언어는 개발자가 직접 코드를 작성해야 하지만 자바는 이러한 작업을 자동으로 해주기 때문에 메모리 관리에 신경쓰지 않아도 된다.

  5. 멀티 쓰레딩 지원
    하나의 프로그램 단위가 동일한 쓰레드를 동시에 수행할 수 있다. 운영체제마다 멀티 쓰레드를 이용하여 API가 다르나 자바의 경우는 자바 API를 사용하기 때문에 쉽게 구현 가능하다.

  6. 동적이다.
    객체 간의 상호 작용을 정의하기 때문에 필요하지 않는 객체는 생성되지 않고, 필요한 객체만 생성하여 사용한다. 오류가 발생하면 발생한 오류의 클래스만 수정하면 되므로 전체를 수정할 필요가 없다. 즉 유지보수를 쉽고 빠르게 진행할 수 있다.

  7. 안전하고 강력하다
    모든 메모리 접근을 자바시스템이 관리하기 때문에 시스템 붕괴의 우려가 없다. 자바는 포인터 개념이 없고 유형 정의가 강고하여 실행 전에 클래스 파일을 이용한 프로그램 검사가 가능하다.

객체 지향 4대 특성

1. 추상화(Abstraction)

객체들의 공통적인 특징(속성, 기능)을 뽑아 이름을 붙이는 것

클래스 VS 객체
클래스 : 분류에 대한 개념 -> 같은 특성을 지닌 여러 객체를 총칭하는 집합의 개념 (ex.사람)
객체 : 실체 -> 유일무이한 사물 (ex. 모모)
추상화
: 구체적인 것을 분해해서 관심 영역 (애플리케이션 경계) 에 있는 특성만 가지고 재조합하는 것 (= 모델링

2. 캡슐화(Encapsulation)

특정 객체가 독립적으로 역할을 제대로 수행하기 위해 필요한 데이터와 기능을 하나로 묶은 것 (모듈화의 의미)

정보를 객체 안에 포함시키고, 그 정보에 대한 직접 접근은 허용하지 않는 대신, 필요에 따라 확인할 수 있는 인터페이스를 외부에 공개하는 방식

  • 접근 제어자

public - All
protected - 클래스, 패키지, 상속
default - 클래스, 패키지
private - 클래스

3. 상속(Inheritance)

상위 개념의 특징을 하위 개념이 물려받는 것

하위 클래스 - 상위 클래스
하위 클래스는 상위클래스 특성을 재사용하고, 확장한다.
상위 클래스의 물려줄 특성이 많을수록 좋다
인터페이스
다중 상속 대신 도입
어떤 객체가 해야할 일을 정의하는 추상 자료형
구현 클래스 is able to 인터페이스 (ex. Runnable)
인터 페이스는 구현을 강제할 메서드가 적을수록 좋다

4. 다형성(Polymorphism)

모듈이 갖고있는 정체성과 표현방식

다형성을 극대화 하기 위해 추상클래스나 인터페이스를 이용한다.

오버라이딩
같은 메서드 이름 / 같은 인자 목록 / 상위 클래스의 메서드 재정의
상위 클래스 타입의 객체 참조 변수에서 자동으로 하위 클래스가 오버라이딩한 메소드를 호출해 줌
오버로딩
같은 메서드 이름 / 다른 인자 목록 / 다수의 메서드 중복 정의

2) 학습내용 중 어려웠던 점

이번 시간은 5조~ 8조의 멘토링 시간이고 팀 프로젝트도 순조롭게 진행되어서 개인적인 독학을 했었다. 따라서, 오늘은 그저 자바와 스프링에 관한 독학이었다.

3) 해결방법

이번 시간은 독학이라 유데미를 보면서 따라 만드는 것이다. 프로그래밍은 책을 읽는 것이 아니라 계속되는 반복 학습으로 몸에 배게 하는 것이다.

4) 학습소감

오늘 내가 이력서를 4번이나 올렸다는 말을 주최측에서 들었을 때, 나는 뭔가 잘못되었다는 것을 예상했다. 사실 나는 원안을 쓰다가 뭔가 수정할 것이 생각난다면 고쳐 쓰는 안 좋은 버릇이 있다. 나는 이걸 고치려면 탈고와 여러 번의 생각을 거쳐야 한다는 것을 떠올렸다. 그리고, 자바와 스프링을 배우는 것은 한국의 주류 언어가 자바였기 때문에 배우는 것이다. 하지만, 나는 자바에 멈추지 않고 다른 언어에도 공부할 것이다. 스프링, 장고, Node.js 등등 프론트엔드를 배운 이후, 백엔드 학습을 한다. 그렇게 풀스택 개발자가 되는 것이다.

0개의 댓글

관련 채용 정보