[OOP] C3. 자바와 객체지향
·
Java/OOP
1. 클래스(개념), 객체(실체) 클래스는 분류에 대한 개념이지 실체가 아니다. 하지만 객체는 실체다. 클래스는 사람이고, 객체는 손흥민이다. 클래스는 펭귄이고, 객체는 뽀로로이다. 클래스와 객체를 구분하는 방법 중 하나는 나이를 물어보는 것이다. ● 사람의 나이는 몇 살인가? VS 손흥민의 나이는 몇 살인가? ● 펭귄의 나이는 몇 살인가? VS 뽀로로의 나이는 몇 살인가? 클래스를 실체가 아닌 개념으로써 받아들여야 자바 프로그래밍에서 혼동하지 않게 된다!! 2. 추상화 : 모델링 객체 지향의 추상화는 모델링을 의미합니다. 추상화는 구체적인 개념이나 객체를 분해하여 그 중에서 관심 있는 특성만을 가지고 재조합하는 과정을 말합니다. 구현하고자 하는 것을 하나의 클래스로 모델링, 추상화하게 되는데 여기서 클..
[OOP] ==과 equals()의 차이점
·
Java/OOP
1. 자바에서 ==와 equals()의 차이점 자바에서 매우 중요한 개념인 == 연산자와 equals() 메서드의 차이점에 대해 알아보려고 합니다. 이 두 가지는 모두 객체를 비교하는 데 사용되지만, 그 방식과 결과는 상황에 따라 매우 다를 수 있습니다. 그러니 자세히 살펴보도록 하겠습니다. 2. == 연산자 2.1) 기본 데이터 타입(리터널 선언) - 값 자바에서 == 연산자는 주로 기본 데이터 타입의 값을 비교할 때 사용됩니다. byte, short, int, long, float, double, char, boolea 등의 값이 같은지 비교할 때는 == 연산자를 사용하면 됩니다!! // 리터널로 선언 int a = 2024; int b = 2024; System.out.println(a == b);..
[OOP] 업캐스팅(Upcasting), 다운캐스팅(Downcasting)
·
Java/OOP
Parent p = new Child(); //업캐스팅 -p는 Parent형. Child c = (Child) p; //다운캐스팅! -p는 Child형. 업캐스팅(upcasting)과 다운캐스팅(downcasting)은 객체 지향 프로그래밍에서 클래스의 상속과 관련된 개념이다. 말 그대로 업캐스팅은 하위 클래스에서 상위 클래스로 형 변환하는 것을 의미한다 다운캐스팅은 상위 클래스에서 하위 클래스로 형 변환을 하는것을 의미 한다. 업캐스팅 (Upcasting) 업캐스팅은 하위 클래스의 객체를 상위 클래스의 객체로 변환하는 것을 말합니다. 이 변환은 자동으로 이루어집니다. class Mammal { void walk() { System.out.println("Mammal is walking"); } } cl..
[OOP] C6. SOLID: 효율적인 객체지향 설계를 위한 5대 원칙
·
Java/OOP
0. 객체 지향 설계 5원칙 SOLID SOLID는 객체 지향 설계 5원칙을 앞 글자를 따서 만든 말이다. 소프트웨어의 결합도는 낮추고, 응집도는 높이는 고전 원칙을 객체 지향의 관점에서 재정립한 것이라고 할 수 있다. ● 결합도 모듈(클래스) 간의 상호 의존 정도를 나타낸다. 결합도가 낮으면 모듈 간의 상호 의존성이 줄어들어 객체의 재사용이나 수정, 유지보수가 용이하다 . ● 응집도 하나의 모듈 내부에 존재하는 구성 요소들의 기능적 관련성을 말한다, 응집도가 높은 모듈은 하나의 책임에 집중하고 독립성이 높아서 재사용이나 기능의 수정, 유지보수가 용이하다. 1. Single Responsibility Principle (단일 책임 원칙) 클래스는 단 한개의 책임을 가져야 한다. 클래스를 변경하는 이유는 ..
[OOP] 가비지 컬렉션(Garbage Collection) - 생성과 소멸
·
Java/OOP
1. 가비지 컬렉션(Garbage Collection) 가비지 컬렉션은 영어로 Garbeage Collection으로 줄여서 GC라고도 부릅니다. 가비지 컬렉션은 자바의 메모리 관리 방법 중의 하나로 JVM의 Heap 영역에서 동적으로 할당했던 메모리 영역 중 필요 없게 된 메모리 영역을 주기적으로 삭제하는 프로세스를 말합니다. 2. 가비지 컬렉터(Garbage Collector) 가비지 컬렉터는 가비지 컬렉션을 수행하는 실제 동작을 담당하는 컴포넌트입니다. 자바 가상 머신(JVM)에서 실행되며, 가비지 컬렉션 알고리즘에 따라 사용하지 않는 객체를 탐지하고 제거합니다. 가비지 컬렉터는 자동으로 동작하며, 개발자가 직접 메모리 관리를 신경쓰지 않아도 됩니다. ● C와 C++ 같은 Unmanaged lang..
[OOP] Call by Value 와 Call by Reference
·
Java/OOP
'Call by Value'와 'Call by Reference'에 대해 알아보겠습니다. 이 두 개념은 함수에 인자를 전달하는 방식에 대한 이해를 돕고, 자바 코드의 동작을 예측하는 데 도움이 됩니다. 1. Call by Value(값에 의한 호출) 'Call by Value'는 함수에 인자를 전달할 때 인자의 값만을 복사해서 전달하는 방식을 말합니다. 이 방식에서는 원본 변수의 값이 함수 내에서 변경되더라도, 원본 변수에는 영향을 주지 않습니다. 자바에서 원시 타입(primitive types) 변수를 전달할 때 'Call by Value' 방식이 적용됩니다. 예를 들어, 아래의 코드를 보겠습니다. public class Main { static void updateValue(int value) { v..
[OOP] C2. 자바의 절차적/구조적 프로그래밍
·
Java/OOP
1. JDK, JRE, JVM JDK (Java Development Kit) JDK는 자바 개발 도구로, 자바 환경에서 돌아가는 프로그램을 개발하는 데 필요한 도구들을 모아놓은 소프트웨어 패키지입니다. JVM과 JRE에 의해 실행되고 구동될 수 있는 자바 프로그램을 생성할 수 있게 해줍니다. JDK에는 개발, 디버깅 등을 위한 도구가 포함되어 있습니다. JRE (Java Runtime Environment) JRE는 자바 실행 환경으로, JVM과 JVM이 자바 프로그램을 동작시킬 때 필요한 라이브러리 파일들과 기타 파일들을 가지고 있습니다. 다른 소프트웨어를 실행하도록 설계된 소프트웨어입니다. 여기에는 클래스 라이브러리, 로더 클래스 및 JVM이 포함됩니다. JVM (Java Virtual Machin..
[OOP] C1. 기계어에서 객체지향 언어로: 컴퓨터 언어의 진화
·
Java/OOP
1. 기계어 (Machine Language) 컴퓨터가 직접 이해하는 언어로 0과 1로 이루어진 이진 코드로 구성됩니다. 프로그래밍이 매우 어렵고 복잡하며, 인간이 이해하기 힘듭니다. CPU 회사마다 기계어가 다르다.(코드의 이식성이 안좋다.) 2. 어셈블리어 (Assembly Language) 기존의 0과 1의 나열에서 벗어나 좀 더 인간친화적인 언어 형태를 갖추었다. 기계어를 인간이 이해하기 쉽도록 기호화한 언어입니다.( ADD, PLUS) 기계어와 1:1로 대응되며, 기계어보다 이해하고 작성하기 쉽습니다. 각 운영체제, 하드웨어 종류에 따라 고유의 어셈블리어가 존재한다.(호환 X) 아직은 프로그래밍이 복잡하며 하드웨어에 의존적이며, 이식성이 떨어집니다. 3. C언어 (C Language) 고급 언어..
JoonYong
'Java/OOP' 카테고리의 글 목록