객체지향 프로그래밍 이란?
 
절차지향언어와는 조금은 다른 개념으로 객체와 클래스를 가지고 프로그램을 조금 더 유기적으로 구성하는 것 이다. 
객체지향언어의 가장 큰 장점은 코드를 언제든지 가져다 쓸 수 있다는 점과 절차지향언어에 비해 유지보수가 용이하다는 것이다. 
이런 객체지향의 특징을 가장 잘 보여주는 문구들이 상속, 추상화, 다형성 등이 있는데 이것들은 나중에 천천히 공부 해야겠다. 

우선 클래스와 객체 대해 알아보자
 
클래스는 객체를 모아놓고 정의한 것이며 클래스는 객체를 생성하는데 사용되며, 
객체는 클래스에 정의된 대로 생성된다. 

객체는 무엇일까 


객체란 클래스에 정의된 내용으로 메모리에 생성된 것을 말한다. 


클래스와 객체를 가장 쉽게 나타내는 것이 설계도랑 비교 하는 것들인데 클래스는 제품설계도, 

객체는 제품정도 생각하면 편하다. 


예를들면 TV설계도(클래스)는 TV라는 제품(객체)을 정의한 것이며 TV(객체)를 만드는데 사용된다. 또한 클래스는 객체를 생성하는데 사용될 뿐, 객체 그 자체는 아니다. 우리가 원하는 기능의 객체를 사용하기 위해서는 먼저 클래스로부터 객체를 생성하는 과정이 선행되어야 한다. 

우리가 TV를 보기 위해서는, TV(객체)가 필요한 것이지 TV설계도(클래스)가 필요한 것은 아니며, TV설계도(클래스)는 단지 TV라는 제품(객체)을 만드는 데만 사용될 뿐이다. 그리고 TV설계도를 통해 TV가 만들어진 후에야 사용할 수 있는 것이다. 프로그래밍에서는 먼저 클래스를 작성한 다음, 클래스로부터 객체를 생성하여 사용한다. 


그럼 이제 인스턴스에 대하여도 알아보자. 


클래스로부터 객체를 만드는 과정을을 클래스의 인스턴스화(instantiate)라고 하며, 

어떤 클래스로부터 만들어진 객체를 그 클래스의 인스턴스(instance)라고 한다.  

클래스를 인스턴스화해서 인스턴스(객체)를 만들고 그것을 가져다가 사용한다고 생각하면 될것 같다. 


간단하게 아래의 예제를 살펴보면서 생각하면 편할 것 이당.


public class Car { // Car라는 class (아래의 객체들을 생성해 주기 위해 만들어짐)

	String color; // 색상을 정하는 객체 String타입
	boolean power; // 전원을 true / false를 결정하는 객체 boolean
	int speed; // 속도를 나타내는 int타입의 객체
	
	void power() { // power를 호출하면 (아래에서) 아래와 같은 동작이 작동된다.
		power = !power;
	}
	
	void speedUp() { // 마찬가지 speedUp이 호출되면 speed의 값이 올라간다. (전위연산)
		++speed;
	}
	
	void speedDown() { // 마찬가지
		--speed;
	}	
}

class CarTest {
	public static void main(String args[]) {
		Car c; // Car라는 타입을 가지는 c를 선언 (Car인스턴스를 참조하기 위해 선언한다.)
		c = new  Car(); // Car인스턴스 생성 (인스턴스화)
		c.speed = 10; // c라는 곳에 Car인스터스를 생성했기 때문에 객체를 가져와 사용한다. speed에 10을 넣어준다.
		c.speedDown(); // --speed도 실행된다.
		System.out.println("현재 스피드는 : "+c.speed);
	}
}


결과값은 당연히



현재 스피드는 : 9

'JAVA > java' 카테고리의 다른 글

Override을 가지고 간단한 게임(?)만들기  (0) 2017.09.07
객체지향(2)  (0) 2017.09.06
Method  (0) 2017.09.05
Array(2) array & for & for-each  (0) 2017.09.05
Array(1)  (0) 2017.09.05