본문 바로가기
국비지원/JAVA

[JAVA] 11-2. 객체와 클래스

by cosmog 2022. 10. 5.
반응형
객체와 클래스
  • 8강 메서드까지 모든 언어들이 가지고 있는 공통적인 규칙들을 살펴보았다.
  • 9강 객체와 클래스 부터는 java와 비슷한 언어들(객체지향언어)만 가지고 있는 개념이다.
  • 이해와 암기만 한다면 따라올 수 있는 개념


⭐ 객체=> 만들어진 결과물
⭐ 클래스=> 객체를 만들기 위한 틀. 클래스 안의 변수 = 객체의 속성

볼펜을 만든다고 했을 때 대량 생산하기 위해 틀을 만드는 것이 class.
new 연산자를 사용해 실제 컴퓨터 안에 생성되면 instance가 생성되었다고 하며
최종적으로 만들어 진 것이 객체 object이다.



기존 절차지향코드 - 계산기(add)

public class ObjectBasic01 {

	public static void main(String[] args) {
		//기존에 사용하던 계산기 - 절차지향코드
		System.out.println("====1번 계산기====");
		System.out.println(add(5));
		System.out.println(add(10));
		System.out.println(add(100));
		
		System.out.println("====2번 계산기====");
		System.out.println(add2(100));
		System.out.println(add2(200));
		
	}

	//result에 매개값을 저장하는 1번 계산기
	static int result;
	static int add(int n) {
		result += n;
		return result;
	}
	
	static int result2;
	static int add2(int n) {
		result2 += n;
		return result2;
	}

}


위의 코드를 객체지향으로 만들어보기(클래스와 객체 사용)

public class Calculator {
	//요것이 클래스 바로 '틀' 이다.
	int result;
	int add(int n) {
		result += n;
		return result;
	}
	
	void print() {
		System.out.println(result);
	}
}
public class ObjectBasic02 {
	
	public static void main(String[] args) {
		//객체지향코드(oop) - calculator class 사용
		
		System.out.println("====1번 계산기====");
		Calculator cal = new Calculator();
		
		System.out.println(cal.add(1));
		System.out.println(cal.add(2));
		System.out.println(cal.add(3));
		
		System.out.println("====2번 계산기====");
		Calculator cal2 = new Calculator();
		
		System.out.println(cal2.add(100));
		System.out.println(cal2.add(200));
		System.out.println(cal2.add(300));
		
	}

}



💡 class안에 들어갈 수 있는것들.

  • 멤버변수 : class 바로 밑에서 생성하므로, class 안의 method들에서는 자유롭게 사용가능.
  • method

pen 클래스와 객체 사용

//대량 생산을 목적으로 하는 클래스는 main이 없습니다.
public class Pen {
	
	//클래스에서 속성을 나타내는 것을 멤버변수(field)라고 한다.
	//멤버변수에서는 값을 바꿔줄 수 없다. 선언&초기화만 가능.
	//값의 변경은 method안에서 가능.
	String color;
	int price;
	String company;
	
	//클래스에서 기능을 나타내는 것을 메서드로 부른다.
	void write() {
		System.out.println(color + " 글씨를 씁니다.");
	}
	
	void info() {
		System.out.println("===펜의 정보===");
		System.out.println("색상:" + color);
		System.out.println("가격:" + price);
		System.out.println("제조사:" + company);
	}
	
}
package day11;

public class PenMain {
	
	public static void main(String[] args) {
		
		//펜의 기능을 사용할 때는 객체로 생성하고, 참조연산자 . 을 사용한다. 
		Pen green = new Pen();
		green.color = "초록";
		green.price = 2000;
		green.company = "모나미";

		green.write();
		green.info();
		
		Pen blue = new Pen();
		blue.color = "파랑";
		blue.price = 2500;
		blue.company = "uni ball";

		blue.write();
		blue.info();
		
        /* calculator도 class로 만들어놨기 때문에 어디에서든 사용가능하다 */
		Calculator cal = new Calculator();
		cal.add(green.price);
		cal.print();
		//System.out.println(cal.add(100));
		
		cal.add(blue.price);
		cal.print();
	}

}

 

멤버변수 vs 지역변수
  • 멤버변수는 기본값이 자동으로 지정된다. (초기화안하고 사용가능, 자동초기화 되므로..)
  • 지역변수는 사용하기 전 반드시 초기화해야한다.

➰ Quiz - 아래 조건을 클래스를 활용하여 만들어보기.

public class Person {
	
	String name;
	int age;
	String job;
	
	String info() {
		String str ="";
		str += "이름: " + name + "\n";
		str += "나이: " + age + "\n";
		str += "직업: " + job + "\n";
		
		return str;
	}

}
public class MainClass {

	/*
	 * Person 클래스를 파일로 정의
	 * 
	 * 멤버변수는 int age, String name, String job
	 * method info() : return String type - 멤버변수를 문자열로 더해서 반환
	 * 
	 * 메인에서는 person객체를 2개 생성해서 각각 확인.
	 */

	public static void main(String[] args) {

		Person person = new Person();

		person.name = "진화영";
		person.age = 25;
		person.job = "사육사";

		System.out.println(person.info());

		Person person2 = new Person();

		person2.name = "위하준";
		person2.age = 38;
		person2.job = "엔지니어";

		System.out.println(person2.info());



	}


}
반응형