WIL 1주차

Geun Bo Kim·2023년 4월 10일
0

WIL

목록 보기
1/4

이번주에는 Java에 대해 공부해 보았다.

Java는 객체지향 프로그래밍 언어이다.

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

객체지향프로그래밍(Object-Oriented Programming, OOP)은 컴퓨터 프로그래밍의 패러다임 중 하나로, 프로그램을 객체(Object)들의 집합으로 바라보고 이러한 객체들 간의 상호작용을 통해 프로그램을 구성하는 방법

Java는 객체지향프로그래밍의 원칙을 따르며, 객체지향적인 특징들을 제공한다고 한다.

객체지향프로그래밍의 원칙

1.캡슐화(Encapsulation): 객체의 필드(Field)와 메서드(Method)를 하나로 묶고, 외부에서의 접근을 제어하는 것입니다. 이를 통해 객체의 내부 구현 정보를 숨기고, 객체 간의 상호작용을 안전하게 보호할 수 있습니다.
2.상속(Inheritance): 이미 존재하는 클래스를 기반으로 새로운 클래스를 작성할 수 있는 기능입니다. 이를 통해 기존 클래스의 속성과 기능을 재사용하고, 새로운 기능을 추가하여 확장할 수 있습니다.
3.다형성(Polymorphism): 하나의 변수나 메서드가 다양한 형태의 데이터 타입을 가질 수 있는 것입니다. 이를 통해 코드의 재사용성을 높이고, 유연성을 높일 수 있습니다.
4.추상화(Abstraction): 객체에서 공통적인 특징을 추출하여 상위 개념으로 일반화하는 것입니다. 이를 통해 복잡한 시스템을 단순화하고, 객체를 이해하기 쉬운 형태로 구성할 수 있습니다.

이러한 원칙을 준수하여 객체를 설계하고, 객체 간의 관계를 정의함으로써 코드의 가독성, 유지보수성, 확장성 등을 개선할 수 있다고 한다.

객체지향프로그래밍의 특징

1.추상화(Abstraction): 객체에서 공통적인 특징을 추출하여 상위 개념으로 일반화하는 것입니다. 이를 통해 복잡한 시스템을 단순화하고, 객체를 이해하기 쉬운 형태로 구성할 수 있습니다.
2.캡슐화(Encapsulation): 객체의 필드(Field)와 메서드(Method)를 하나로 묶고, 외부에서의 접근을 제어하는 것입니다. 이를 통해 객체의 내부 구현 정보를 숨기고, 객체 간의 상호작용을 안전하게 보호할 수 있습니다.
3.상속(Inheritance): 이미 존재하는 클래스를 기반으로 새로운 클래스를 작성할 수 있는 기능입니다. 이를 통해 기존 클래스의 속성과 기능을 재사용하고, 새로운 기능을 추가하여 확장할 수 있습니다.
4.다형성(Polymorphism): 하나의 변수나 메서드가 다양한 형태의 데이터 타입을 가질 수 있는 것입니다. 이를 통해 코드의 재사용성을 높이고, 유연성을 높일 수 있습니다.
5.객체(Object): 객체는 데이터와 그 데이터를 처리하는 메서드로 이루어진 것으로, 현실 세계의 객체를 모델링한 것입니다. 객체를 이용하여 프로그램을 구성하면, 코드의 가독성과 유지보수성이 향상됩니다.

객체지향프로그래밍은 이러한 특징을 활용하여 안정적이고 확장 가능한 프로그램을 작성할 수 있도록 도와주며, 대규모 프로젝트를 보다 효과적으로 관리할 수 있도록 도와준다고 한다.

1.JVM

Java Virtual Machine 의 약자로 “자바 가상 머신”이라는 뜻을 가지고 있다.
가상 머신이란 가상의 기기를 만들어주는 것을 의미한다.
다시 말해서, 여러가지의 기기위에 Java 프로그램을 실행시킬 수 있는 가상의 기기를 만들어주는것을 의미한다.

JVM의 구성
인터프리터📇
Java .class 코드 해석기
운영체제가 읽은 바이트 코드💬를 기기(기계)가 실행할 수 있는 기계어로 번역
JIT 컴파일러📇
빠른 Java .class 코드 해석기
인터프리터의 효율을 높여주는 서포터 해석기
메모리 영역🗂️
Java 데이터를 저장하는 영역
운영체제로 부터 JVM이 할당받은 메모리 영역
클래스 로더🚚
Java .class 바이트 코드💬를 메모리 영역에 담는 운반기
JVM으로 class(바이트 코드💬)를 불러와서 메모리🗂️에 저장함
가비지 컬렉터🧹
Java 쓰레기 청소기
메모리 영역🗂️에서 안쓰는 데이터를 주기적으로 흡수해가는 청소기
동작흐름

요약:

  • 자바 가상 머신은 사용자가 작성한 소스코드(.java)를 컴퓨터가 알아 들을 수 있는 언어로 변환시켜줌.
  • JVM이 있기 때문에 자바는 운영체제에 구애받지 않는다.

WIL 회고록

이번주는 자바에 대해 알아보고 기본문법에 대해 공부를 해보았다.
알고리즘을 함께 풀어보는 것을 통해 배운것들을 사용하며 적응해보았다.
객체지향쪽에서 계속 막히고 있지만 어떻게든 이해해야겠다...

  • 다음 주간 목표
    1.객체 지향에 나오는 기본 명칭들이 어떠한 구조인지 어떤 역할인지 설명할 수 있을 정도로 공부하기
    2.알고리즘을 풀 때 쓰는 메서드들을 정리해보기
    3.TIL을 매일 쓰면서 내가 어떤 것들을 배우고 문제를 풀었는지 정리해보기
profile
미래는 개발이다

0개의 댓글