본문 바로가기

JAVA/JAVA Programming

[JAVA] 객체지향 개발과 관련된 용어들

반응형

출처 : 자바의신 VOL.1 기초 문법편



객체지향 관련 용어 목록



 자바는 객체지향 언어이기 때문에 이와 관련도니 용어들은 알고 있어야 한다. 다루는 용어들을 모른다고 자바를 개발하지 못한는 것은 아니지만, 다른 개발자들과 커뮤니케이션하기 위해서도 어느정도는 알고 있어야 하며, 개념은 확실히 이해하고 있어야만 한다.



■ 객체지향 관련 용어 목록

 ● 클래스(Class)

 ● 상태(State)와 행위(Behavior)

 ● 캡슐화(Encapsulation)

 ● 메시지(Message)

 ● 객체(Object)

 ● 상속(Inheritance)

 ● 다형성(Polymorphism)

 ● Overriding

 ● Overloading





■ 클래스(Class)


 "상태"와 "행위"를 갖는 자바의 기본 단위를 의미한다. 자바에서는 지금까지 만들어 온 클래스들이 여기에 속한다.




상태(State)와 행위(Behavior)


 어떤 사물을 나타낼 때에는 행위로 구분하여 표시하는 것이 가능하다. 자바에서 "상태"는 클래스나 인스턴스 변수로, "행위"는 메소드로 표현할 수 있다.

public class Common {

	private int state;	// 상태
	
	public void setState(int newState) {
		
		      // 내용생략
	}
}


캡슐화(Encapsulation)


 연관된 "상태"와 "행위"를 결정하는 기능을 묶어주는 것을 의미한다. 이렇게 묶어 주면 기능을 클래스 밖에서 접근 가능한 대상을 제한하는 정보 은닉(Information Hiding)이 가능하다. 그리고, 하나의 객체를 위한 코드가, 다른 객체를 위한 코드와 무관하게 수행할 수 있는 모듈화(Modularitry)가 가능해 진다. 이처럼 묶여 있는 가장 작은 단위를 클래스라고 보면 된다.


public class Common {

	private int state;	// private로 선언함으로써 정보 은닉

	public void setState(int newState) {	// 상태를 변경 가능
		
	    // 내용 생략
	}
}



메시지(Message)


 메소드에서 다른 메소드를 호출할 때 전달하는 값을 메시지라고 한다. 자바에서는 여러분들이 메소드를 호출할 때 넘겨주는 매개 변수들이 여기에 속한다. 위의 코드에서 newState가 메시지를 의미하는 매개 변수이다.



객체(Object)


 클래스는 사물의 단위를 의미하지만, 객체는 각 사물을 의미한다. 예를 들면 "책"은 클래스, <자바의 신>은 책 중의 하나를 의미하는 객체라고 볼 수 있다.


Book javaSolutions = new Book();

  지금까지 살펴본 클래스의 main( ) 메소드에서 가장 첫 줄에 생성한 것들이 바로 이 객체다.






상속


 부모에 선언된 변수와 메소드에 대한 사용권을 갖는 것을 말한다. 즉 클래스 선언시 extends를 사용하여 확장하거나, implements를 사용하여 구현한 경우가 여기에 속한다.






다형성


 이 세상에 부모와 자식이 똑같을 수가 없고, 자식들도 같을 수가 없다. 마찬가지로 자바에서는 부모 클래스에서 파생된 자식 클래스들의 기능이 각기 다를 수 있다는 것을 의미한다.


public class Common {

	public void method() {
		
	    // 내용 생략
	}
}


  이러한 부모 클래스가 있을 때,
public class FirstChild extends Parent {	// Parent 클래스를 상속 받음

	public void method() {
		
	    // 내용 생략
	}
}

  와

public class SecondChildChild extends Parent {	// Parent 클래스를 상속 받음

	public void method() {
		
	    // 내용 생략
	}
}

 가 있으면 FirstChild와 SecondChild에 있는 method( )는 다른 기능을 수행해도 무관하다는 것이 다형성이다.




Overriding


 부모 클래스에 선언되어 있는 메소드와 동일한 선언을 갖지만 구현이 다른 것을 의미한다. 자바에서 다형성을 제공하는 하나의 방법이 바로 Overriding이다. 예제로 살펴보면,


public class Parent {
	
	public void method() {
		
		// 내용 생략
	}
}

 이러한 부모 클래스가 있을 때,


public class Child extends Parent {
	
	public void method() {
		
		// 내용 생략
	}
}

 method( ) 부모 클래스의 method( )를 덮어 쓴 Overriding 처리가 된 것이다. 즉 method( )를 실행하면 부모 클래스의 method( )가 아닌 child 클래스의 method( )가 실행된다.





Overloading


 메소드의 이름은 동일해도, 매개 변수들을 다르게 하는 것을 의미한다. 그래서, 동일 한 기능은 하지만, 메소드에 넘겨줄 수 있는 매개 변수의 타입을 다양하게 함으로써 메소드를 사용하는 다른 개발자가 쉽게 구현할 수 있게 해준다. 예를 통해 살펴보면,


public class Overloading {
	
	public void getDate() {
		
		// 내용 생략
	}
	
	public void getData(int value) {
		
		// 내용 생략
	}
	
	public void getData(String value) {
		
		// 내용 생략
	}
}

 getData( ) 메소드는 메소드의 매개 변수에 따라서 셋 중에 호출되는 메소드가 달라진다. 이렇게 구현한것이 바로 Overloading이다.

반응형