객체는 속성(변수) 와 동작(메소드) 로 나눌 수 있는데
이런 속성과 동작을 하나의 객체로 묶고
객체 단위로 프로그래밍 하는것을 객체 지향 프로그래밍이라 부른다.
요새 인기있는 언어인 루비, 파이썬, 자바 등이 이에 속한다
은행 시스템 으로 예를 하나 들자면
A 라는 사람에 대한 클래스를 만들어보면
public class Person{
String name;
int age;
int cash;
}
로 Person이라는 클래스를 선언해줄 수 있다.
이 클래스안에는 이름(name), 나이(age), 현금(cash) 변수가 있다.
다시 돌아와 Bank 라는 클래스를 만들어보면
public class Bank{
int balance;
}
로 Bank 클래스를 선언했다
여기서 두 클래스를 소유 계좌와 예금주 의 관계로 묶기 위하여
Person 클래스 안에
public class Person{
String name;
int age;
int cash;
Bank account;
}
두 클래스는 엮이게 된다.
또한 Bank 클래스에도
public class Bank{
int balance;
Person owner;
}
마찬가지로 두 클래스는 엮이게 된다.
이처럼 두 클래스를 엮을 때 클래스명이 마치 자료형처럼 쓰이게 된다.
이런식으로 프로그램을 객체 단위로 정리하고, 이 객체들끼리 엮으면서 프로그래밍 하는것이 객체 지향 프로그래밍이다.
다음은 Person 이라는 인물 클래스 와
BankAccount 라는 은행 계좌 클래스를 만들고
각 클래스에 맞는 인스턴스를 생성하여
두 인스턴스를 엮어주는 것을 진행한 결과 입니다.
따로 자바 파일을 만들어 각 클래스 명으로 저장을 하였고
각 클래스 안에 name, age, account 그리고 Owner, balance 로 변수를 만들었습니다
중요한 점은 account 와 Owner는 서로의 클래스명을 마치 자료형처럼 사용하여
엮어두었는데 이렇게 엮어두어야 나중에 인스턴스(객체)끼리 엮을 수 있습니다.
두 클래스에 맞게 인스턴스(객체)를 먼저 선언하였습니다.
위 사진에서는 Alex 와 a1이 인스턴스(객체)에 속합니다.
그 후 각 인스턴스에 값을 지정해주었고
마지막에 인스턴스 끼리 엮어주었습니다.
크게 본다면 클래스는 설계도, 인스턴스는 설계도를 기반으로 만들어진 제품
이라고 볼 수 있습니다.
클래스는 양식(form)만 있는 느낌이라면 인스턴스는 그 클래스의 양식에 맞게
새로운 객체를 생성한 형태입니다.