객체 지향(Object Oriented) 프로그래밍이란
현실 세계의 사물을 모델로 하여 문제를 해결하는 개념 중 하나이다.
현실 세계의 모델을 프로그램으로 옮겨와서,
그 모델들 간 상호 작용을 통해 문제를 해결하려는 프로그래밍 방식이다.
(1) 객체
현실 세계의 사물이나 개념을 프로그램 안에서 모델링한 것
ex) 자동차, 사람, 동물 등...
(2) 클래스
객체를 정의하기 위한 틀로, 설계도 역할을 함. 객체들의 속성과 동작을 정의한다.
클래스를 통해 생성된 객체를 "인스턴스"라고 한다.
(3) 캡슐화(Encapsulation)
데이터와 메서드를 하나의 단위로 묶고, 외부에서의 직접적 접근을 제한하는 것
데이터 보호 및 코드 모듈화 가능
(4) 상속(Inheritance)
이미 존재하는 클래스를 기반으로 새로운 클래스를 만들어 확장하는 것
기존 클래스 특성을 물려받아 새로운 클래스에서 재사용 가능하게 함
(5) 다형성(Polymorphism)
하나의 인터페이스나 기본 클래스를 사용해 여러 형태로 구현할 수 있는 능력
계산기를 프로그램 구현 시, 하나의 계산기 클래스를 생성하고
한 클래스에서 여러 개의 계산기 객체를 생성할 수 있다.
/* 5-1 객체지향 프로그래밍이란?
*/
//더하기 계산기
class Calculator1 {
static int result = 0;
static int add(int num) {
result += num;
return result;
}
}
class Calculator2 {
static int result = 0;
static int add(int num) {
result += num;
return result;
}
}
// 객체지향프로그램
class Calculator3 {
int result = 0; // static 빠짐
int add(int num) {
result += num;
return result;
}
int sub(int num) {
result -= num;
return result;
}
}
public class Day11 {
public static void main(String[] args) {
System.out.println(Calculator1.add(3));
System.out.println(Calculator1.add(4));
System.out.println(Calculator2.add(3));
System.out.println(Calculator2.add(7));
System.out.println();
Calculator3 cal1 = new Calculator3(); //계산기 1 객체를 생성한다
Calculator3 cal2 = new Calculator3(); //계산기 2 객체를 생성한다
System.out.println(cal1.add(3)); // 기존 static result값인 7부터 시작
System.out.println(cal1.add(4));
System.out.println(cal2.add(3));
System.out.println(cal2.sub(2));
}
}