1. 클래스
- 클래스는 객체를 정의한다
- 클래스는 객체를 생성하는데 사용한다
- 클래스는 객체를 만들기 위한 설계도라고 할 수 있다

1) 클래스 구성
- 필드(field) : 클래스의 속성을 나타내는 변수이다
- 메서드(method) : 클래스의 기능을 나타내는 함수이다
- 생성자(constructor) : 클래스의 객체를 생성하는 역활을 한다
- 이너클래스(inner class) : 클래스 내부의 클래스를 의미한다
- 위의 4가지 요소로 구성된다
- 필드, 메서드, 이너클래스를 통틀어 멤버(member)라고 한다
■ 자동차를 예로 필드의 속성과 메서드의 기능을 알아보자
속성 { 모델, 바퀴의 개수, 도어의 개수, 색상 등... } -> class Car {
//변수 선언을 통해 나타낸다 private String model ;
private int wheels;
private int doors;
private String color;
기능 { 시동, 가속, 정지, 와이퍼 작동 등...} -> void power( ) {....};
//함수를 통해 나타낸다 void accelerate( ) {....};
void stop( ) {....};
void wipers( ) {....};
}
public class Example { //Example class 선언
int a = 10; //필드
if a(){ }; //메서드
void printX() {...} //메서드
Example exe = new Exanple() //생성자
class Example2 {...} //이너 클래스
}

2) 클래스 추가 정의
- 클래스 == 데이터 + 함수 의 결합으로 사용할 수 있다
- 클래스 : 데이터와 함수의 결합 (구조체 + 함수)
- 데이터는 변수와 같다
- 함수는 메서드와 같으며, 명령문의 집합체이다
- 함수의 작업은 데이터를 재료로 계산을 한다
- 데이터와 함수는 상호 관련성이 있으므로 결합하여 사용하는 것이 용이하다 - 데이터 저장의 변화는 다음과 같다
- 변 수 : 하나의 데이터를 저장할 수 있는 공간
- 배 열 : 같은 종류의 여러 데이터를 하나로 저장할 수 있는 공간
- 구조체 : 서로 다른 종류의 데이터라도 관련성이 있다면 하나로 저장할 수 있는 공간
- 클래스 : 데이터와 함수의 결합 (구조체 + 함수)

- 클래스는 사용자 정의 타입이다
- 원하는 타입을 사용자가 직접 만들 수 있다
-
ex) 사용자 정의 변수를 통하여 코그의 단순화한 경우

2. 객체
- 실제로 존재하는 사물이나 개념, 논리 등을 말한다
- 객체가 가지는 기능과 속성에 따라 사용되는 용도가 다르다
- 실제 존재물 HW을 컴퓨터가 실행할 수 있는 SW 로 만들는 과정에서 사용된다
- 모든 인스턴스를 대표하는 일반적 용어이다
- 클래스를 객체로 생성하기 위해서 메모리로 할당하는 과정을 인스턴스화 한다고 말한다

1) 구성요소
- 객체 = 속성(변수) + 기능(메서드) 로 구성된다
- 객체를 사용하기 위해서는 속성과 기능을 부여해 줘야 한다
- HW를 분석하여 SW화 하는 방법이다
2) 객체의 생성
- 클래스명 ; //클래스를 선언한다
- 클래스명 변수명 ; //클래스의 객체를 참조하기 위한 변수(참조변수)를 선언한다
- 변수명 = new 클래스명( ) ; //클래스 인스턴스를 생성하여 참조변수에 주소를 저장한다. 메모리에 참조변수 영역을 확보한 객체가 생성된다
- 2와 3은 다음과 같이 줄여서 사용할 수 있다 -> Audio audio = new Audio( );
ex) 1 class Audio; class Audio;
2 Audio audio; -> Audio audio = new Audio( );
3 audio = new Audio( );

3) 객체의 사용
- 클래스 작성 -> 객체 생성 -> 객체 사용 의 순서로 작성한다
- 클래스는 객체를 만들기 위한 설계도 역활이며, 객체는 객체를 사용하기 위하여 생성된다. - 객체의 사용은 변수와 메서드를 사용한다는 의미이다
- 객체 사용 시에는 참조변수를 필히 호출하여 사용한다
- 참조변수.멤버변수 = 값 ; //참조변수 객체의 멤버변수에 값을 저장하는 경우에 사용한다
ex) audio.volume = 50 ; //오디오 객체의 볼륨변수의 값을 50으로 저장한다
- 참조변수.메서드변수( ) ; -> 참조변수 객체의 메서드변수를 호출하여 실행하는 경우에 사용한다
ex) audio.volumeup( ) ; //오디오 객체의 볼륨변수에 있는 기능을 실행시킨다 (volume++) - 변수가 생성되면 기본값으로 초기화된다
ex1)

ex2)

ex3)
class Audio {
public static void main(String arg[]){
Audio audio = new Audio( );
audio.model;//변수 사용
audio.power = power; //전원 true
audio.volume = 50; //현재 볼륨 입력
audio.volumeup( ); //메서드 사용, 볼륨 +1 상승 = 50+1 = 51
System.out.println("현재의 볼륨은" + audio.volume + "입니다");
}
}
class audio {
String model;
Int volume;
boolean power = power;
audio.model( ) {“white”;}
audio.power( ) {power = !power;}
audio.volumeup( ) {volume++;}
audio.volumedown( ) {volume--;}
}
result
"현재의 볼륨은 51입니다
import java.util.Scanner; //Scanner 유틸 호출
//간이계산기 프로그램
public class Calculator {
public static void main(String[] args) { //maun 메서드 선언
Scanner scan = new Scanner(System.in); //Scanner 객체 생성 : 외부입력
System.out.println("첫 번째 숫자를 입력하세요."); //콘솔출력
String no1 = scan.nextLine(); //첫 번째 숫자 입력
System.out.println("사칙연산자를 입력하세요.");
String op = scan.nextLine(); //사칙연산자 입력
System.out.println("두 번째 숫자를 입력하세요.");
String no2 = scan.nextLine(); //두 번째 숫자 입력
int num1 = Integer.parseInt(no1); //입력받은 첫 번째 문자를 숫자형으로 변환
int num2 = Integer.parseInt(no2); //입력받은 두 번째 문자를 숫자형으로 변환
int result;
if(op.equals("+")) { //덧셈 연산
result = num1 + num2;
}
else if(op.equals("-")) { //뺄셈 연산
result = num1 - num2;
}
else if(op.equals("/")) { //나누기 연산
result = num1 / num2;
}
else{
result = num1 * num2; //곱하기 연산
}
System.out.println(no1 + " " + op + " " + no2 + " = " + result); // 결과값 출력
}
}
3. 소스파일과 클래스의 관계
- 하나의 소스 파일에는 하나의 public class만 존재해야 한다
- 또한, 하나의 소스 파일에는 하나의 클래스만 존재하는 것을 권장한다
- 소스파일의 이름은 main 메서드가 있는 클래스의 이름과 일치해야 한다
- 하나의 소스 파일에 여러 개의 클래스가 존재할 경우 소스파일의 이름은 아래와 같이 사용한다
| 소스파일 | 클래스 | 내용 |
| Hello1.java | public class Hello1 { } class Hello2 { } |
public class가 있는 경우 소스파일의 이름은 반드시 public class 이름과 일치해야 한다 |
| class Hello1 { } class Hello2 { } |
public class가 없는 경우 소스파일의 이름은 Hello1, Hello2 어떤 것을 사용해도 상관없다 |
- 아래와 같은 경우는 오류가 발생한다
| 소스파일 | 클래스 | 내용 |
| Hello1.java | public class Hello1 { } public class Hello2 { } |
하나의 소스파일에 두 개 이상의 public class가 존재할 수 없다 각 클래스를 별도의 소스파일로 나눠서 저장하거나 class 중 한 개의 public를 삭제해야 한다 |
| Hello2.java | public class Hello1 { } class Hello2 { } |
소스파일의 이름과 public class의 이름이 일치하지 않는다 소스파일의 이름을 Hello1.java로 변경해야 한다 |
| hello1.java | public class Hello1 { } class Hello2 { } |
소스파일의 이름과 public class의 이름이 일치하지 않는다 소스파일의 이름은 대소문자도 일치해야 한다 소스파일의 이름을 대문자 H로 변경해야 한다 |
※ 참조 링크
▶ 해시넷 객체 : http://wiki.hash.kr/index.php/%EA%B0%9D%EC%B2%B4
객체 - 해시넷
객체(客體) 또는 오브젝트(object)란 객체 지향 프로그래밍(OOP)에서 클래스(class)가 실제로 구현된 인스턴스(instance)를 말한다. 즉, 객체란 클래스를 인스턴스화한 것이다. 절차적 프로그래밍과 달
wiki.hash.kr
▶ 위키피아 객체 : https://en.wikipedia.org/wiki/Object_(computer_science)
Object (computer science) - Wikipedia
From Wikipedia, the free encyclopedia Jump to navigation Jump to search Arbitrarily defined dataset with specified properties used in some programming paradigms In computer science, an object can be a variable, a data structure, a function, or a method. As
en.wikipedia.org
▶ Classes & Objects | Java | Tutorial 26 : https://www.youtube.com/watch?v=Mm06BuD3PlY
'JAVA > 객체지향프로그래밍' 카테고리의 다른 글
| Java - 클래스 재사용 (0) | 2022.08.14 |
|---|---|
| OOP(객체지향 프로그래밍)_Object Oriented Programming (0) | 2022.05.12 |




