-
"자바의 클래스와 객체: 개념부터 활용까지 쉽게 이해하기"☕Java 2024. 12. 10. 11:28728x90
자바 프로그래밍에서 클래스와 객체는 핵심 개념입니다. 이 글에서는 클래스와 객체의 개념, 그리고 이를 활용한 프로그램 작성 방법을 알아보겠습니다.
1. 클래스와 객체란?
- 클래스(Class): 데이터와 함수를 하나로 묶어 놓은 설계도입니다. 예를 들어, 데이터베이스에서 테이블이 데이터를 저장하는 구조를 정의하듯이, 클래스는 프로그램에서 데이터와 그 데이터를 처리하는 방법을 정의합니다.
- 객체(Object): 클래스를 기반으로 생성된 실제 데이터 묶음입니다. 클래스가 설계도라면, 객체는 그 설계도로 만들어진 실제 제품입니다.
2. 클래스와 메인 함수의 관계
자바 프로그램은 메인 함수(main 메서드)가 있어야 실행됩니다. 메인 함수는 반드시 클래스 내부에 위치해야 하며, 프로그램에는 메인 함수를 포함한 클래스가 최소 하나 이상 필요합니다.
3. 클래스와 객체의 활용 예시
예를 들어, 제품 정보를 저장하고 관리하는 프로그램을 작성한다고 가정해봅시다. 먼저, 제품을 나타내는 Product 클래스를 정의하고, 이를 활용하여 여러 제품 객체를 생성할 수 있습니다.
public class ClassTest { public static void main(String[] args) { System.out.println("Hello"); // 아이디는 1, 이름은 컴퓨터인 데이터를 만들자. → 객체생성 Product p1 = new Product(); // new는 Heap메모리영역에 메모리를 생성하라! p1.id = 1; p1.name = "컴퓨터"; // 이것이 oop 이다 (자바 프로그래밍) // 아이디는 2, 이름은 냉장고인 데이터를 만들자. → 객체생성 Product p2 = new Product(); p2.id = 2; p2.name = "냉장고"; // 아이디는 3, 이름은 세탁기인 데이터를 만들자. → 객체생성 Product p3 = new Product(); p3.id = 3; p3.name = "세탁기"; // 아이디는 4, 이름은 TV인 데이터를 만들자. → 객체생성 Product p4 = new Product(); p4.id = 4; p4.name = "TV";
위 코드에서 Product 클래스는 제품의 ID와 이름을 저장하며, print() 메서드를 통해 제품 정보를 출력합니다. ClassTest 클래스의 메인 함수에서는 Product 객체를 생성하고 초기화한 후, print() 메서드를 호출하여 제품 정보를 출력합니다.
레스트풀 API 개발자는 데이터베이스에서 데이터를 관리하고, 이를 프론트엔드 개발자에게 전달하는 역할을 수행합니다. 이 과정에서 데이터베이스(SQL)를 통해 데이터를 가져오고, 이를 자바 클래스에서 처리하여 프론트엔드로 전달하는 방식으로 작업이 진행됩니다.
- 데이터베이스(SQL): 데이터베이스에서 SQL 쿼리를 사용하여 데이터를 가져옵니다. 이 데이터는 영구적으로 저장되어 관리됩니다.
- 자바 클래스(메모리): 자바 클래스는 데이터베이스에서 가져온 데이터를 메모리상에 저장하고, 이를 프론트엔드 개발자에게 전달할 수 있는 형식으로 변환합니다.
- 클래스의 역할:
- 프로덕트: 데이터베이스에서 가져온 결과를 처리하고 저장하는 부분입니다.
- 이용: 메인 함수 또는 프론트엔드와 연결되어 이 데이터를 활용하는 부분입니다.
즉, 데이터베이스에서 SQL을 통해 데이터를 가져오고 이를 자바 클래스를 통해 처리하여, 최종적으로 프론트엔드 개발자에게 전달하는 구조입니다.
CPU
← RAM의 영역
메인함수실행하면 CPU는 Stack에 메인함수 영역을 확인
묶음 처리 메모리를 힙에생성하러 Heap 영역으로 이동
Product p1 = new Product() < 메인클래스에서 new 키워드로 Heap 의 영역을 확보한다 확보된영역(id, name 이 들어갈 곳 이것을 '객체'라고 한다)
p1.id = 1; P(1) 을 Heap 영역에 저장해라
p1.name = "세탁기"; P(1) 을 Heap 영역에 저장해라
클래스는 영역 메모리의 데이터를 객체라고한다(코드 == p1.id = 1;)
메인함수가 끝나면 main 함수의 영역은 삭제된다
메인함수가 아닌 Heap 영역은 삭제가 안되고 데이터가(참조되지않은) 남아있는데 그 데이터를 가비지(쓰레기)데이터라고한다
JDK 설치를하면 가비지컬렉터가 설치되는데 주기적으로 삭제한다4. 메모리 구조와 객체 생성
자바 프로그램이 실행되면, 메모리는 크게 **스택(Stack)**과 힙(Heap) 영역으로 나뉩니다.
- 스택(Stack): 메서드 호출 시 생성되는 지역 변수와 함수 호출 정보를 저장합니다.
- 힙(Heap): new 키워드를 통해 생성된 객체가 저장되는 영역입니다.
예를 들어, Product p1 = new Product(); 코드를 실행하면, 힙 영역에 Product 객체가 생성되고, 스택 영역의 p1 변수는 이 객체의 주소를 참조합니다.
5. 가비지 컬렉션(Garbage Collection)
메인 함수가 종료되면, 스택 영역의 변수는 사라지지만, 힙 영역의 객체는 남아 있을 수 있습니다. 이러한 사용되지 않는 객체는 가비지 컬렉션에 의해 자동으로 메모리에서 제거됩니다.
System.out.println(p4.id+p4.name); System.out.println(p1.id); System.out.println(p1.name); // 제품의 아이디는1이고, 제품명은 컴퓨터 입니다. System.out.println("제품의 아이디는 "+p1.id+"이고, 제품명은 "+p1.name+" 입니다."); // p2의 내용도 위처럼 나오도록 화면에 출력하세요. System.out.println("제품의 아이디는 "+p2.id+"이고, 제품명은 "+p2.name+" 입니다."); System.out.println("제품의 아이디는 "+p3.id+"이고, 제품명은 "+p3.name+" 입니다."); System.out.println("제품의 아이디는 "+p4.id+"이고, 제품명은 "+p4.name+" 입니다.");
클래스는 코드 일 뿐이다
ClassTest << 실행하는 클래스(메인함수 있는곳)
Product << 저장하는 클래스
Stact(메인 함수 안에 있는 변수 와 )
- 함수 안에 있는 변수 :로컬변수(local variables) - 메인클래스
public class ClassTest { public static void main(String[] args) { System.out.println("Hello"); // 아이디는 1, 이름은 컴퓨터인 데이터를 만들자. → 객체생성 Product p1 = new Product(); // new는 Heap메모리영역에 메모리를 생성하라! p1.id = 1; p1.name = "컴퓨터";
- 객체 안에 있는 변수 : 멤버변수 (필드 field) - 프로덕트클랙스
public class Product { // 클래스 만들기 int id; //맴버변수, 필드 String name; //맴버변수, 필드
아이디와 이름과 같은 데이터는 내가 만들지만, 이를 화면에 출력하는 것은 프로덕트 클래스의 역할입니다. 즉, 데이터의 처리와 출력은 프로덕트 클래스에서 담당하므로, 해당 작업은 프로덕트 클래스의 책임입니다.
우리는 남을 위해 희생하고 봉사하는 정신을 가지고, 필요한 함수를 만들어서 그 작업을 효율적으로 처리할 수 있습니다. 이때, 클래스 안에 만들어지는 함수는 **메소드(Method)**라고 부릅니다.
이와 같이 클래스를 설계하고, 그 안에 필요한 메소드를 정의하는 것을 클래스 설계라고 합니다.
public class Product { // 클래스 만들기 int id; //맴버변수, 필드 field String name; //맴버변수, 필드 field // 클래스 안에 만드는 함수를 메소드(Method) 라고한다. void print(){ //리턴이 없는경우 void 표시를해준다 System.out.println("제품의 아이디 : "+id+", 제품명 : "+name);; } }
728x90'☕Java' 카테고리의 다른 글
Java 객체지향 프로그래밍으로 책 정보 관리 시스템 구현하기 (0) 2024.12.10 Number 클래스 설명 및 프로그램 동작 원리 (0) 2024.12.10 Java 에서 함수 만들기 : 초보자를 위한 단계별 설명 (1) 2024.12.09 Java 배열 마스터하기: 초보자도 쉽게 이해하는 Array 완벽 가이드 (1) 2024.12.09 Java 반복문 마스터하기: 초보자도 쉽게 이해하는 for, while, do-while (0) 2024.12.08