Java 문법

6.클래스(혼공자)[6-1]

개발하는지호 2023. 9. 27. 11:25

6-1 객체 지향 프로그래밍

 

객체 : 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신의 속성을 가지고 있으면서 식별 가능한 것을 말한다.

객체는 속성과 동작으로 구성되어 있다. ex) 사람은 이름, 나이 등의 속성과 웃다, 걷다 등의 동작이 있고, 자동차는 색깔, 모델명등의 속성과 달린다. 멈춘다. 등의 동작이 있다. ==> 자바에서 속성과 동작을 각각 필드메소드라고 한다.

 

객체 지향 프로그래밍 : 객체를 만들고 이를 조립해 완성된 프로그램을 만드는 기법

 

메소드 : 객체들 사이의 상호작용 수단, 다른 객체의 기능을 이용하는 것 = 메소드 호출

 

메소드 호출: 리턴값 = 전자계산기객체.메소드(매개값1, 매개값2, ...)

->

int result = Calculator.add(10,20);

 

객체 간의 관계 : 객체는 개 별적으로 사용될 수 있지만, 대부분 다른 객체와 관계를 맺고 있다. 

1. 집합 관계 : 객체는 하나의 부품이고 하나는 완성품에 해당

2. 사용 관계: 객체 간의 상호작용을 말한다.

3. 상속 관계: 상위(부모) 객체를 기반으로 하위(자식) 객체를 생성하는 관계를 말한다.

-> 객체 지향 프로그래밍은 만들고자 하는 완성품인 객체를 모델링하고, 지밥 관계에 있는 부품 객체와 사용 관계에 있는 객체를 하나씩 설계한 후, 조립하는 방식으로 프로그램을 개발하는 기법.

 

 

클래스(설계도) : 객체를 생성하기 위한 필드와 메소드가 정의되어 있다.

인스턴스 : 클래스로부터 만들어진 객체를 말한다.

 

클래스 선언

사용하고자 하는 객체를 구상했다면 그 객체의 대표 이름을 하나 결정하고 이것을 클래스 이름으로 정한다.

 

식별자 작성 규칙은 다음과 같다.

1. 하나 이상의 문자로 이루어져야 한다.

2. 첫 글자에는 숫자가 올 수 없다.

3.$,_ 외의 특수 문자는 사용할 수 없다.

4.자바 키워드는 사용할 수 없다.

 

public class 클래스 이름 {

}

 

class Tire{

}

 

*public 접근 제한자는 파일 이름과 동일한 이름의 클래스 선언에만 붙일 수 있다.

 

객체 생성과 클래스 변수

클래스를 선언한 다음, 컴파일을 했다면 객체를 생성할 설계도가 만들어진 셈. 클래스로 부터 객체를 생성하려면 다음과 같이 new연산자 사용

 

new 클래스();

-> new 연산자는 힙 영역에 객체를 생성시킨 후 객체의 번지를 리턴하도록 되어 있다.

 

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

-> 여기서 변수는 스택영역에 입력이 되고, 그 옆에 힙 영역의 객체를 참조할 객체의 번지를 저장한다.

 

Student와 StudentExample 클래스의 용도

 

public class StudentExample{

  public static void main(String[] args){

  Student s1 = new Student();

   }

}

 

---------

 

public class Student {

}

 

-> 클래스는 두 가지 용도가 있다. 하나는 라이브러리(API)용이고 다른 하나는 실행용이다. 라이브러리 클래스는 다른 클래스에서 이용할 목적으로 설계 되고, 프로그램 전체에서 사용되는 클래스가 100이라면 99개는 라이브러리 클래스이다.

 

실행 클래스는 프로그램의 실행 진입점인 main() 메소드를 제공하는 역할을 합니다.

 

 

클래스의 구성 멤버

 

필드: 필드는 개게의 고유 데이터, 부품 객체, 상태 정보를 저장하는 곳이다. 선언 형태는 변수와 비슷하지만, 필드를 변수라고 부르지는 않습니다. 변수는 생성자와 메소드 내에서만 사용되고 생성자와 메소드가 실행 종료되면 자동 소멸한다. 하지만 필드는 생성자와 메소드 전체에서 사용되며 객체가 소멸되지 않는 한 객체와 함께 존재한다.

 

생성자: 생성자는 new 연산자로 호출되는 특별한 중괄호 {} 블록이다. 생성자의 역할은 객체 생성 시 초기화를 담당한다. 필드를 초기화하거나 메소드를 호출해서 객체를 사용할 준비를 한다. 생성자는 메소드와 비슷하게 생겼지만, 클래스 이름으로 되어 있고 리턴 타입이 없다.

 

메소드: 메소드는 객체의 동작에 해당하는 중괄호{} 블록을 말한다. 중괄호 블록은 이름을 가지고 있는데, 이거싱 메소드 이름이다. 메소드를 호출하게 되면 중괄호 블록에 있는 모든 코드들이 일괄적으로 실행된다. 이때 메소드는 필드를 읽고 수정하는 역할도 하지만, 다른 객체를 생성해서 다양한 기능을 수행하기도 한다. 메소드는 객체 간의 데이터를 전달하는 수단이다. 외부(호출한 곳)로부터 매개 값을 받아 실행에 이용하고, 실행 후 결과 값을 외부(호출한 곳)로 리턴할(돌려 줄) 수도 있다.