Hello

객체와 객체지향 프로그래밍 본문

try

객체와 객체지향 프로그래밍

nari0_0 2019. 9. 10. 21:30
728x90

객체란 실제로 존재하는 것을 의미한다. 개발자라면 객체는 클래스에 정의됨에 맞게 메모리에 생성되는 것이란걸 알고 있어야한다.

 

그럼 클래스란 무엇일까? 클래스는 객체를 정의 해 놓은 것이며, 객체를 생성하기 위해 사용된다.

클래스로 객체를 생성하는 것을 인스턴스라고도 하며 해당 클래스로부터 만들어진 객체를 그 클래스의 인스턴스라고 합니다.

이론의 관점이 아닌 개발의 관점으로는

데이터와 메소드를 묶어서 다룰 수 있는 오브젝트 이며 사용자의 용도에 맞게 정의할 수 있는 사용자 지정 타입이다.

 

객체는 가장 넓은 의미로 모든 인스턴스를 대표하는 의미를 가지며 해당 클래스로 만들어진 것에 중점을 두는 것이 아닌 구체적인 데이터에 가까운 의미를 가지고 있습니다.

 

객체는 속성, 기능 요소로 이루어져 있고 클래스는 객체의 속성과 기능이 정의되어 있습니다.

 

객체지향의 기본 개념은 객체간 유기적인 상호작용이 일어 나는 것이다.

객체간의 상호작용을 통해 재사용성, 유지보수, 중복 코드 제거가 가능해 졌다.

객체지향프로그래밍은 위의 장점을 잘 지켜서 프로그램 작성 하는 것이라고 생각하면 쉬울 것 같다.

위의 장점을 기본으로한 객체지향의 특징을 살펴 보겠다.

 

캡슐화는 클래스를 작성하고 이를 인스턴스로 생성하여 클래스 내부의 요소에 접근하는 것이다.

내부 변수를 private 접근제어자로 선언하고 메소드는 public 으로 선언해 메소드를 통해서만 접근이 가능하기 때문에 메소드 내부에서 어떤 로직으로 처리가 되는지 노출되지 않고 자료형이 외부로 부터 보호된다고 할 수 있다.

클래스 내부의 응집도는 높이며 외부의 클래스는 결합도를 떨어뜨여 작성하는 것이 중요하다.

응집도란 하나의 메소드가 여러가지 로직을 담고 있는 것이 아니라 하나의 기능에 집중해 그 기능의 로직만 가지는 것이며, 결합도는 외부의 클래스간의 관계 의존성을 나타냅니다.

 

상속은 상위클래스의 속성과 기능을 받아서 재사용 할 수 있는 것이며, 하위클래스의 용도에 맞게 기능을 수정해서 사용할 수도있다.

 

다형성은 구현 혹은 상속받은 객체가 상위 클래스로 형변환이 가능한 것이다. 이과정에서 동적 바인딩이 일어나게 된다. 동적 바인딩은 런타임 시점에 객체(인스턴스)의 타입에 맞춰 생성하는 것이다.

 

728x90

'try' 카테고리의 다른 글

JAVA Stream  (0) 2019.10.01
Java Generic  (0) 2019.09.18
2019.09.03  (0) 2019.09.03
2019.09.01  (0) 2019.09.01
2019.08.12  (0) 2019.08.12