Java

07. Java - 클래스(1)_이론편

코골면서 딩가딩가 2024. 5. 9. 17:55

 
안녕하세요 코를 너무 많이 골아서 그런가 늦잠을 자서 늦게 왔습니다..😴😴😴  오늘은 클래스에 대해서 공부를 해보려고합니다. 제 꿈이 건물주인데 현실에서는 쉽지않고...  자바에서라도 여러가지 클래스를 만들어보고 즐겨 볼까 합니다... (훌쩍😥)
그럼 시작해보겠습니다..ㅎㅎ 
 
 
 

항상 시작은 신나게...start

 
 
 
✅ 00. 객체 지향 프로그래밍
객체 지향이란?
객체 지향이란 현실 세계에서 어떤 제품을 만들 때는 부품을 먼저 만들고, 이 부품들을 하나씩 조립해서 완성품을 만드는데, 소프트웨어를 개발할 때에도 부품에 해당하는 개체들을 먼저 만들고, 이 객체들을 하나씩 조립해서 완성된 프로그램을 만드는 기법 객체 지향 프로그래밍이라고 한다.
 
 
객체란?
객체(object)란 물리적으로 존재하거나 개념적인 것 중에서 다른 것과 식별 가능한 것을 말합니다. 
객체는 속성과 동작으로 구성되는데, 사람의(이름, 나이) 등의 속성과 사람이(웃다, 걷다) 등의 동작으로 구분이 됩니다. 자바는 이러한 속성과 동작을 각각 필드(field)  메소드(Method)라고 부릅니다. 
 

 
필드란?
필드(Field)는 객체의 데이터를 저장하는 역할을 합니다. 선언 형태는 변수 선언과 비슷하지만 쓰임새는 다릅니다.
 
 
생성자란?
생성자(Constructor)는 new 연산자로 객체를 생성할 때 객체의 초기화 역할을 담당합니다.
 
 
메소드란?
메소드(Method)는 객체가 수행할 동작입니다. 다른 프로그램 언어에서는 함수라고 하기도 하는데, 객체 내부의 함수는 매소드라고 부릅니다.
 
 
✅ 01. 객체 간의 관계 (집합 관계 / 사용 관계 / 사용 관계)

 
 
집합 관계 
집합 관계는 한 객체가 다른 객체를 포함하는 관계를 의미합니다. 
· 예 를 들어, 자동차는 엔진, 타이어, 핸들 등의 부품으로 구성됩니다. 이때 자동차 객체는 엔진 객체, 타이어 객체, 핸들 객체 등을 포함하고 있습니다.
 
사용 관계 
사용 관계는 한 객체가 다른 객체의 기능을 호출하는 관계를 의미합니다.
· 예를 들어, 사람 객체가 자동차 객체 기능을 호출하여 시동을 걸거나 가속하는 등의 작업을 수행합니다. 이때 사람 객체는 자동차 객체의 기능을 사용하여 자신의 동작을 구현합니다.
 
상속 관계 
상속 관계는 부모 클래스와 자식 클래스 간의 관계를 의미합니다. 부모 클래스는 자식 클래스에게 자신의 속성과 메서드를 상속합니다. 
· 예를들어,  자동차 클래스가 부모 클래스이고 기계 클래스가 자식 클래스라면, 기계  클래스는 자동차 클래스의 모든 속성과 메서드를 상속받아 사용할 수 있습니다.
 
 
 
✅ 02. 객체 지향 프로그래밍의 특징
객체 지향 프로그램의 특징은 캡슐화, 상속, 다형성이다. 다음 개념만 간단히 살펴보겠습니다.
 
캡슐화
캡슐화(Encapsulation)란 객체의 데이터(필드), 동작(메소드)을 하나로 묶고 실제 구현 내용을 외부에 감추는 것을 말합니다. 외부 객체는 객체 내부의 구조를 알지 못하여서 내부 객체가 제공하는 필드와 메소드만 이용할 수 있습니다.

 
 
상속
상속(Inheritance)은 객체 지향 프로그래밍에서는 부모 역할의 상위 객체와 자식 역할의 하위 객체가 있다. 부모 객체는 자기가 가지고 있는 필드와 메소드를 자식 객체에게 물려주어 자식 객체가 사용할 수 있도록 해줍니다.
 

 
 
다형성
다형성(Polymorphism)은 사용 방법은 동일하지만 실행 결과가 다양하게 나오는 성질을 말합니다. 프로그램을 구성하는 객체를 바꾸면 프로그램의 실행 성능이 다르게 나올 수 있습니다.

 
 
 
✅ 03. 객체와 클래스
클래스란?
객체 지향 프로그래밍에서도 객체를 생성하려면 설계도에 해당하는 클래스(class)가 필요합니다. 클래스로부터 생성된 객체를 해당 클래스의 인스턴스(instance)라고 부릅니다.

※ 그리고 클래스로부터 객체를 만드는 과정을 인스턴스화라고 합니다. 동일한 클래스로부터 여러개의 인스턴스를 만들수 있습니다.
 
 
클래스 선언
클래스 선언은 객체 생성을 위해 설계도를 만드는 작업입니다. 

 
※ 공개 클래스란?
공개 클래스는 어느 위체 있든지 패키지와 상관없이 사용할 수 있는 클래스를 말합니다. 
 
 
객체 생성 및 클래스 변수(new 연산자)
클래스로부터 객체를 생성하려면 객체 생성 연산자인 new가 필요합니다.

클래스 변수 = new 클래스();

 
new 연산자 뒤에는 생성자 호출 코드가 오는데, 클래스(); 형태를 가집니다. new 연산자는 객체를 생성시킨 후 객체의 주소로 다시 리턴하기 때문에 다음과 같은 인스턴스화가 가능합니다.

출처 - https://velog.io/@minthug94_/OOP1

 
 

 
다음 예제는 실행했을 때 클래스 변수가 객체를 참조하는 모양을 모여줍니다.
 

 
이번에도 앞에서 공부한것처럼 new연산자를 사용했기 때문에 각각 다른 객체로 생성이 되며, 서로 참조하는 변수가 다릅니다. 그림처럼 붕어빵 틀이 붕어빵을 만들어주는 설계도 역할을 해주며,만들어진 붕어빵은 인스턴스화가 되었습니다.
 
 
 
 

붕어빵 애기하다보니...ㅎ 못참고 먹으러갑니다.

 
 

확실히 이제 클래스까지 공부하니까 개발자냄시가 조금 나는거 같기도하공…히히 그래도 까불지말고 클래스는 할거 많으니까 나눠서 진행해보겠습니다..