티스토리 뷰
JAVA란 무엇인가?
1995년에 발표된 자바는 제임스 고슬링 (James Gosling)과 다른 연구원들이 개발한 객체 지향적 프로그래밍 언어이다.
초기의 자바는 가전제품에 탑재할 언어로 개발되었지만,
현재는 엔터프라이즈 기업환경에서 실행되는 서버 애플리케이션을 개발하는 종추적인 언어이다.
JAVA의 특징
장점
JAVA는 JVM 위에서 동작하기 때문에 운영체제와는 독립적으로 실행할 수 있다.
JAVA는GC 를 통한 자동적인 메모리 관리를 지원하여 다른 언어에 비해 안전성이 높다.
Tip) JVM : Java Virtual Machine 이란?
: OS에 종속받지 않고, CPU가 Java를 인식, 실행할 수 있게 하는 가상 컴퓨터이다.
Tip) GC : GabageCollection 이란?
: 프로그래머가 동적으로 할당한 메모리 영역 중 더 이상 쓰지 않는 가비지 영역을 찾아서 해제하는 기능이다.
단점
JVM 위에서 동작하기 때문에 실행 속도가 상대적으로 느리다.
특징
- 객체지향 프로그래밍 언어이다.
- 운영체제에 독립적이기 때문에 이식성이 높다.
- 스레드 생성 및 제어와 관련된 라이브러리 API를 제공하기 때문에 실행되는 운영체제와 관련 없이 멀티 스레드를 쉽게 구현 가능하다.
- 자동 메모리 관리를 한다.
자바에 대해서는 간단하게 특징을 알아보았다.
이제는 이러한 JAVA의 꽃인 객체지향 프로그래밍에 대해 알아 보도록 해보자!
꼭 JAVA에서만 사용하는 것이 아닌 C#, TypeScript 같은 프로그래밍 언어 등등에 사용하는 개념이다.
객체란 무엇인가?
객체는 현실의 무엇인가에 대응하는 개념이다.
즉, 현실세계에 독립적으로 존재하는 모든 것(유형, 무형, 사물, 개념 등)을 의미한다.
class는 객체를 표현하는 하나의 수단일 뿐 class자체로 객체가 아니라는 것을 알아야 한다.!
객체 지향 프로그래밍 (OOP) 란?
현실 세계의 사물들을 프로그래밍으로 옮겨와 객체로 보고, 그 객체로부터 특징과 기능을 뽑아와 프로그래밍하는 기법이다.
객체 지향 프로그래밍은 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용된다.
객체 지향 프로그래밍 (OOP) 특징
상속
상위 개념의 특징을 하위 개념이 물려받는 것이다.
추상화
클래스(객체)들의 공통적인 속성(변수, 메서드)이나 동작들을 하나로 묶어 표현하는 것이다.
캡슐화
데이터와 코드의 형태를 외부로부터 알 수 없게 하고, 데이터의 구조와 역할, 기능을 하나의 캡슐 형태로 만드는 방법이다
다형성
다양한 형태로 표현이 가능한 구조를 말한다.
같은 이름의 기능을 하는 요소를 여러 개 만드는 것
객체 지향 프로그래밍 (OOP) 원칙
- SRP (Single Responsibility Principle, 단일 책임 원칙)
: 클래스는 단 하나의 목적을 가져야 하며, 클래스를 변경하는 이유는 단 하나의 이유여야 한다. - OCP (Open-Closed Principle, 개방 폐쇄 원칙)
: 클래스는 확장에 열려있고, 변경에는 닫혀 있어야 한다. - LSP (Liskov Substitution Principle, 리스코프 치환 원칙)
: 상위 타입의 객체를 하위 타입으로 바꾸어도 프로그램은 일관되게 작동해야 한다. - ISP (Interface Segregation Principle, 인터페이스 분리 원칙)
: 클라이언트는 이용하지 않는 메서드에 의존하지 않도록 인터페이스를 분리해야 한다. - DIP (Dependency Inversion Principle, 의존 역전 법칙)
: 클라이언트는 추상화(인터페이스)에 의존해야 하며, 구체화(구현된 클래스)에 의존해서는 안된다.
좋은 강의
노마드 코더 유튜브 : https://www.youtube.com/watch?v=cg1xvFy1JQQ
감사합니다.
'프로그래밍 언어 > 💫JAVA' 카테고리의 다른 글
[JAVA] Comparator 비교 : 데이터 정렬을 우리가 바꾸는 방법은? (0) | 2023.11.15 |
---|---|
[JAVA] Enum 열거 : 코드의 가독성을 높이는 효과적인 선택 (0) | 2023.11.09 |
[JAVA] Generic 제네릭 : 안전성을 추가하고 사용하자 (0) | 2023.11.01 |
[JAVA] Set 컬렉션 : 데이터 중복 제거와 효율적 관리 (0) | 2023.10.30 |
[JAVA] List 컬렉션 : 데이터 접근하고 관리하는 최적의 방법은? (0) | 2023.10.25 |
- Total
- Today
- Yesterday
- aws
- 개발자
- git
- 디자인패턴
- 비동기
- 개발블로그
- 코딩테스트
- Front
- Fetch
- 개발환경
- 프로세스
- Spring Security
- 데이터 베이스
- 개발
- 자바스크립트
- JavaScript
- 템플릿
- Cors
- 프론트
- DBeaver
- 네트워크
- AJAX
- java
- 오라클
- spring
- Mac
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |