이번주에는 Java에 대해 공부해 보았다.
객체지향 프로그래밍이란??
객체지향프로그래밍(Object-Oriented Programming, OOP)은 컴퓨터 프로그래밍의 패러다임 중 하나로, 프로그램을 객체(Object)들의 집합으로 바라보고 이러한 객체들 간의 상호작용을 통해 프로그램을 구성하는 방법
객체지향프로그래밍의 원칙
1.캡슐화(Encapsulation): 객체의 필드(Field)와 메서드(Method)를 하나로 묶고, 외부에서의 접근을 제어하는 것입니다. 이를 통해 객체의 내부 구현 정보를 숨기고, 객체 간의 상호작용을 안전하게 보호할 수 있습니다.
2.상속(Inheritance): 이미 존재하는 클래스를 기반으로 새로운 클래스를 작성할 수 있는 기능입니다. 이를 통해 기존 클래스의 속성과 기능을 재사용하고, 새로운 기능을 추가하여 확장할 수 있습니다.
3.다형성(Polymorphism): 하나의 변수나 메서드가 다양한 형태의 데이터 타입을 가질 수 있는 것입니다. 이를 통해 코드의 재사용성을 높이고, 유연성을 높일 수 있습니다.
4.추상화(Abstraction): 객체에서 공통적인 특징을 추출하여 상위 개념으로 일반화하는 것입니다. 이를 통해 복잡한 시스템을 단순화하고, 객체를 이해하기 쉬운 형태로 구성할 수 있습니다.
이러한 원칙을 준수하여 객체를 설계하고, 객체 간의 관계를 정의함으로써 코드의 가독성, 유지보수성, 확장성 등을 개선할 수 있다고 한다.
객체지향프로그래밍의 특징
1.추상화(Abstraction): 객체에서 공통적인 특징을 추출하여 상위 개념으로 일반화하는 것입니다. 이를 통해 복잡한 시스템을 단순화하고, 객체를 이해하기 쉬운 형태로 구성할 수 있습니다.
2.캡슐화(Encapsulation): 객체의 필드(Field)와 메서드(Method)를 하나로 묶고, 외부에서의 접근을 제어하는 것입니다. 이를 통해 객체의 내부 구현 정보를 숨기고, 객체 간의 상호작용을 안전하게 보호할 수 있습니다.
3.상속(Inheritance): 이미 존재하는 클래스를 기반으로 새로운 클래스를 작성할 수 있는 기능입니다. 이를 통해 기존 클래스의 속성과 기능을 재사용하고, 새로운 기능을 추가하여 확장할 수 있습니다.
4.다형성(Polymorphism): 하나의 변수나 메서드가 다양한 형태의 데이터 타입을 가질 수 있는 것입니다. 이를 통해 코드의 재사용성을 높이고, 유연성을 높일 수 있습니다.
5.객체(Object): 객체는 데이터와 그 데이터를 처리하는 메서드로 이루어진 것으로, 현실 세계의 객체를 모델링한 것입니다. 객체를 이용하여 프로그램을 구성하면, 코드의 가독성과 유지보수성이 향상됩니다.
객체지향프로그래밍은 이러한 특징을 활용하여 안정적이고 확장 가능한 프로그램을 작성할 수 있도록 도와주며, 대규모 프로젝트를 보다 효과적으로 관리할 수 있도록 도와준다고 한다.
Java Virtual Machine 의 약자로 “자바 가상 머신”이라는 뜻을 가지고 있다.
가상 머신이란 가상의 기기를 만들어주는 것을 의미한다.
다시 말해서, 여러가지의 기기위에 Java 프로그램을 실행시킬 수 있는 가상의 기기를 만들어주는것을 의미한다.
JVM의 구성
인터프리터📇
Java .class 코드 해석기
운영체제가 읽은 바이트 코드💬를 기기(기계)가 실행할 수 있는 기계어로 번역
JIT 컴파일러📇
빠른 Java .class 코드 해석기
인터프리터의 효율을 높여주는 서포터 해석기
메모리 영역🗂️
Java 데이터를 저장하는 영역
운영체제로 부터 JVM이 할당받은 메모리 영역
클래스 로더🚚
Java .class 바이트 코드💬를 메모리 영역에 담는 운반기
JVM으로 class(바이트 코드💬)를 불러와서 메모리🗂️에 저장함
가비지 컬렉터🧹
Java 쓰레기 청소기
메모리 영역🗂️에서 안쓰는 데이터를 주기적으로 흡수해가는 청소기
동작흐름
요약:
이번주는 자바에 대해 알아보고 기본문법에 대해 공부를 해보았다.
알고리즘을 함께 풀어보는 것을 통해 배운것들을 사용하며 적응해보았다.
객체지향쪽에서 계속 막히고 있지만 어떻게든 이해해야겠다...