day05 - 객체

JTH·2023년 1월 27일
0

gb_jth

목록 보기
10/56

2. 객체(=object)

2-1. 프로그래밍에서의 객체

  • 프로그램에서 표현하고자 하는 기능을 묶기 위한 단위 //

2-2 객체를 구성하는 단위

  • 객체를 이루는 것은 데이터와 기능이다. // 데이터 = 변수 , 기능 = 메서드
  • 데이터는 변수로 표현
    -> 객체안에 포함된 변수를 '멤버변수', '전역변수', '프로퍼티', '필드'
  • 기능은 메서드로 표현된다.

2-3. 클래스와 객체의 관계

  • 객체를 생성하기 위해서는 객체의 설계도가 필요하다.
  • 객체의 설계도 역할을 하는 프로그램 소스 -> 클래스(Class)

2-4. 클래스(Class)

-객체의 설계도 역할을 하는 프로그램 소스

  • 공장에서 하나의 설계도를 가지고 여러 개의 제품을 생산할 수 있는 것처럼 하나의 클래스를 통해 동일한 구조를 갖는 객체를 여러개 생성할 수 있다.

2-5. 클래스의 기본 작성 방법

	class 클래스이름{
		멤버변수;

		void 메서드이름(){
			...
		}

	}
  • class라는 예약어와 클래스의 이름을 명시하고 { } 블록을 구성
  • 멤버변수는 여러개 존재할 수 있다. 이 때, 선언과 동시에 할당할 수도 있고, 객체를 통해 간접적으로 할당할 수도 있다.
  • 메서드는 여러개 존재할 수 있다.
  • 클래스 안에 포함된 멤버 변수와 메서드를 특성에 따라 그룹화 하기위한 기법이 클래스를 작성하는 것이라고 이해할 수 있다.

2-6. 객체의 생성

  • 객체의 선언

    클래스이름 객체이름;

  • 객체의 할당

    객체이름 = new 클래스이름();

  • 선언과 할당의 통합

    클래스이름 객체이름 = new 클래스이름();

package Class;

class Character{
	// 일반적으로 멤버변수는 선언만 한다.
	String name;
	int age;
}

public class Main02 {

	public static void main(String[] args) {
		Character d = new Character();    // d의 객체 생성
		d.name = "둘리";
		d.age = 19;
				
		Character h = new Character();    // h의 객체 생성
		h.name = "희동";
		h.age = 3;
		
		System.out.println("이름 : " + d.name + ", 나이 : " + d.age);
		System.out.println("이름 : " + h.name + ", 나이 : " + h.age);
		
		
	}

}

2-7. 객체의 사용

  • 객체안에 포함된 변수나 메서드를 (.)으로 연결하여 접근한다.
  • 객체이름.멤버변수;
  • 객체이름.메서드();
  • std.name = "홍길동";
package Class;

// 학생 정보를 포함하는 클래스
class Student { // Student 라는 설계도를 만든것.
	// 멤버변수
	String name = "자바학생";
	int age = 20;
	String number = "0101234568";
}

public class Main01 {

	public static void main(String[] args) { // 위의 클래스 student 설계도로 std, std2 라는 객체1,2(tool)를 만든것
		// 객체의 선언과 할당 분리
		Student std;
		std = new Student();

		// 객체의 생성과 할당 일괄지정
		Student std2 = new Student();

		System.out.println("std 이름 : " + std.name);
		System.out.println("std 나이 : " + std.age);
		System.out.println("std 전화번호 : " + std.number);

		System.out.println("std2 이름 : " + std2.name);
		System.out.println("std2 나이 : " + std2.age);
		System.out.println("std2 전화번호 : " + std2.number);
		System.out.println("---------------------------------");

		std.name = "홍길동";
		std.age = 30;

		System.out.println("std 이름 : " + std.name);
		System.out.println("std 나이 : " + std.age);

		System.out.println("std2 이름 : " + std2.name);
		System.out.println("std2 나이 : " + std2.age);
		System.out.println("-----------------------------------------");

		std2.name = "이순신";
		std2.age = 25;

		System.out.println("std 이름 : " + std.name);
		System.out.println("std 나이 : " + std.age);

		System.out.println("std2 이름 : " + std2.name);
		System.out.println("std2 나이 : " + std2.age);
	}

}

2-8. 값이 대입되지 않은 멤버 변수를 갖는 클래스

  • 클래스란 객체를 위한 틀을 제공하는 것이기 때문에 클래스 작성과정에서 멤버변수에 대입된 값은,
    객체를 통하여 멤버 변수의 값을 지정하기 전까지 사용될 "기본값"으로서의 의미이다.
  • 객체를 통하여 새로운 값이 대입되면 클래스 작성시에 멤버변수에 대입한 값은 의미를 잃어버리게 된다.
  • 때문에 일반적으로 클래스 작성시에는 멤버변수에 값을 지정하지 않는다.

2-9. 메서드를 포함하는 클래스

  • 메서드란 프로그램에서 하나의 동작 단위를 의미한다.

  • 두 개 이상의 메서드가 서로 동일한 대상을 위해서

  • 클래스에 멤버변수와 메서드가 공존할 경우, 멤버변수는 모든 메서드가 공유하는 전역 변수로 존재하게 된다.

  • 변수의 종류
    -> 멤버변수 (=전역변수)
    : 클래스 안에서 선언된 변수로써, 클래스 블록 범위 안에서 유효하다.

    -> 지역변수
    : 메서드 안에서 선언된 변수로써, 메서드의 블록을 빠져나가지 못한다.
    그러므로 다른 메서드는 해당 변수를 인식하지 못한다.
    이규칙은 조건문, 반복문 같은 블록 {}을 형성하는 모든 경우에 해당한다.

  • null : 아무것도 아닌 값

2-10. 메서드만을 포함하는 클래스

  • 객체 안에 멤버변수(=데이터)가 포함되지 않는다.
  • 객체 안에 포함된 메서드를 호출하여 결과를 만들기 위한 목적이므로 굳이 여러개의 객체를 생성할 필요가 없다.
package Class;
class Member {
	String name; // 파랑멤버변수
	int age;
	void setName(String name) { // 갈색지역변수
		this.name = name;
	}
	void setAge(int age) {
		this.age = age;
	}
	String getName() {
		return this.name; // this 를 사용하여 멤버변수를 가져온다.
	}
	int getAge() {
		return this.age;
	}
	void say() {
		System.out.println(this.getName());
		System.out.println(this.getAge());
	}
}
public class Main06 {
	public static void main(String[] args) {
		Member member = new Member();
		member.setName("자바학생");
		member.setAge(20);
		member.say();
	}
}
profile
//

0개의 댓글