본문 바로가기
프로그래밍/JAVA,JSP

Java - 객체 지향의 개요

by 판데스 2009. 12. 3.
반응형

 실세계에 의미하는 모든 것들을 객체 라고 하며 프로그래밍의 세계에서 이야기하는 객체도 바로 이와 같이 실생활에서 이야기하는 객체와 동일하다. 객체지향의 개념은 소프트웨어를 구성하는 각 부분을 최대한독립적으로 만들어서 필요한 몇가지 결합만으로도 곧바로 실제 동작하는 소프트 웨어를 얻을 수 있고, 또한 한 부분에 문제가 있을 경우 그 부분만 고치거나 새로운 것으로 교체하면 되도록 한 것이다. 이러한 재사용의 개념이 객체지향 프로그램의 특징이자 가장 큰 장점이라 할 수 있다.

 

 1) 객체와 클래스

 

 자바는 대표적인 객체지향 언어이며, 자바를 이루는 모든 구성요소는 객체를 기반으로 하고 있다 객체의 가장 큰 특징중의 하나는 객체는 데이터와 기능을 한 몸체 안에서 가진다는 점이다. 클래스는 이러한 객체를 추상화 하여 독립적으로 다룰 수 있도록 한 자료형이다. 클래스는 객체를 만드는 도구 또는 설계도와 같고 객체는 클래스를 실제로 사용할 수 있도록 실체화 한 것이다. 따라서 하나의 클래스에서 수십개의 객체를 생성할 수 있으며 실제 프로그램을 작성할때 코딩하는 것은 클래스이다. 이러한 객체는 자신의 고유 데이터와 그 데이터를 처리할 수 있는 메소드로 구성되며, 객체 사이의 통신은 메시지 전달에 의해 이루어 진다. 또한 데이터 접근이 허용된 메소드를 통해서만이 객체 외부에서 객체 내부의 데이터를 직접 접근할 수 있다.

 

2) 상속

 

 객체지향의 개념은 클래스를 이용하여 다른 클래스를 생성 또는 정의할 수 있도록 함으로써 클래스간에 계층관계(상속관계) 를 형성한다. 상위 클래스의 모든 속성과 메소드가 하위 클래스로 상속된다. 자바에서는 상속 관계를 표현하기 위해서 extends라는 키워드를 사용한다.

 일반적인 클래스 계층 관계에서는 하나의 상위 클래스로 부터 속성과 메소드를 상속 받는 것이 일반적이다. 그러나 특이한 경우에 한 클래스가 두개 이상의 사위 클래스로 부터 속성을 상속 받을수 있다. 이를 다중상속이라고한다. 그러나 자바는 다중상속을 지원하지않고 인터페이스를 통해서 이러한 다중 상속기능을 지원하고 있다.

 

3) 캡슐화

 

 캡슐화란 객체가 보유하고 있는 자료와 절차(메소드)에 대해 외부에 가시성을 적절히 제고함으로서 객체 외부로부터 자료로의 접근을 제하하는 것이다. 즉, 객체가 가지는 자료와 메소드 등을 위해 필요한 모든 자원을 객체 내에 포함시킴으로써 객체 외부로부터 접근은 메소드를 통해 간접적으로 허용하지만 직접적으로 접근할 수 없게 하는 것이다. 객체는 자신의 인터페이스들을 외부에 널리 알림으로써 다른 객체들은 그 객체가 일을 어떻게 수행할 지에 대해 전혀 알지 못하더라도 단지 인터페이스만을 통해 그객체를 사용할 수 있다.

 캡슐화는 프로그래머에게 높은 모듈성과 정보은닉의 장점을 제공한다. 모듈성은 하나의 객체를 위한 소스 코드가 다른 객체를 위한 소스 코드와 독립적으로 무관하게 유지될 수 있다는 것을 의미 하며 이는 프로그램의 재 사용성을 높이는데 많은 역할을 한다.

 

4) 다형성

 

 다형성은 어러개의 클래스가 같은 메시지에 대해서 각자의 방법으로 동작할 수 있는 능력이라고 볼 수 있다. 다형성을 제공하기위해 C++에서는 연산자 다중정의, 함수 다중정의 그리고 함수 재정의를 제공해 주고 있지만, 자바에서는 메소드 다중정의와 메소드 재정의를 제공해 주고있다. 메소드 중복이 되는 객체지향언어에서는 삼각형 사각형 원의 면적을 구할수있는 메소드 area를 작성하여 각각의 클래스에서 해당하는 메소드 area()를 호출하여 사용할수 있다.

//동적..

 

------------------------------------------------------------------------------------

반응형

'프로그래밍 > JAVA,JSP' 카테고리의 다른 글

JSP DB - JDBC구성  (0) 2009.12.03
JSP - JSP의 구성요소  (0) 2009.12.03
Java - 클래스  (0) 2009.12.03
Java - 멤버 변수와 접근 지정자  (0) 2009.12.03
Java - 메소드  (0) 2009.12.03