객체지향
- 객체 지향 언어는 실세계의 객체를 프로그램으로 표현하기 위해서 클래스와 객체 개념을 도입한 언어를 말한다.
- 특징으로는 캡슐화(객체 내부를 보호하고 볼 수 없게 하는 것)
- 객체는 클래스라는 캡슐을 사용하며, 필드 와 메소드 를 구성된다.
클래스와 객체 생성 및 활용
- 클래스는 객체를 만들기 위한 틀이다.
- 클래스로 만들어진 것이 객체이다.
- 간단한 예시로 붕어빵 틀과 만들어진 붕어빵이 있다.
public class Circle{ //클래스의 구성요소를 멤버라 한다. 멤버 변수를 필드, 멤버 함수를 메소드 라 한다.
public int radius; //필드
public String name; //필드
public Circle() {}; // 생성자
public double getArea() { // 메소드
return 3.14*radius*radius;
}
public static void main (String args[]){
Circle pizza;
// Cirlce 에 대한 객체 레퍼런스 변수 pizza를 선언한다. 레퍼런스를 가지는 변수이지 객체가 생성된 것이 아니다.
pizza = new Circle(); // Circle 객체를 생성한다.
pizza.radius = 10; //
pizza.name = "자바피자";
double area = pizza.getArea();
}
C++과 달리 레퍼런스 변수를 선언하고 객체를 생성하는 코드를 입력해야 객체가 생성된다!!
예시
반지름과 이름을 가진 Circle 클래스를 작성하고, Circle 클래스의 객체를 작성하라.
public class Circle {
int radius;
String name;
public Circle() {}
public double getArea() {
return 3.14*radius*radius;
}
public static void main(String[] args) {
Circle pizza;
pizza = new Circle();
pizza.radius = 10;
pizza.name = "자바피자";
double area = pizza.getArea();
System.out.println(pizza.name + "의 면적은 "+area);
Circle donut = new Circle();
donut.radius = 2;
donut.name = "도넛";
area = donut.getArea();
System.out.println(donut.name + "의 면적은 "+area);
}
}
실행결과
자바피자의 면적은 314.0
도넛의 면적은 12.56
예시
너비와 높이를 입력받아 사각형의 합을 출력하는 프로그램을 작성하라. 너비(width)와 높이(height)필드, 그리고 면적 값을 제공하는 getArea() 메소드를 가진 Rectangle 클래스를 만들어 활용하라.
import java.util.Scanner;
class Rectangle{
int width;
int height;
int getArea() {
return width*height;
}
}
public class RectApp {
public static void main(String[] args) {
Rectangle rect = new Rectangle();
Scanner scanner =new Scanner(System.in);
System.out.print(">>");
rect.width = scanner.nextInt();
rect.height = scanner.nextInt();
System.out.println("사각형의 면적은 "+rect.getArea());
scanner.close();
}
}
실행결과
>>7 4
사각형의 면적은 28
클래스를 활용하여 만든 객체의 필드 안에 Scanner 클래스를 활용해서 값을 입력 받는다는 아이디어가 좋다!
'Java > 기본 프로그래밍' 카테고리의 다른 글
[JAVA] 객체 배열 ( 객체 배열 개념 ) (0) | 2024.02.06 |
---|---|
[JAVA] 생성자 ( 생성자, this 레퍼런스 ) (1) | 2024.02.05 |
[JAVA] 예외 처리 ( try catch finally 문 ) (0) | 2024.01.31 |
[JAVA] 다차원 배열 ( 2차원 배열, 비정방형 배열 ) (1) | 2024.01.30 |
[JAVA] 배열 ( 배열 기초, length필드, for-each 문 ) (1) | 2024.01.29 |