Yankee의 JAVA 2강[객체지향]

2014. 12. 23. 00:00Tutorial & Training/JAVA

728x90

객체지향이란 무엇일까요?

정의는

객체들이 메시지(Message)를 통해 통신을하고 원하는 결과를 얻는것

각 객체는 고유의 데이터와 데이터를 처리할 수 있는 메소드(Method)로 구성


간단히 말하자면

현실세계 실제라는 세계관을 구상하여 모델링을 통해 소프트웨어를 개발하는 방법입니다.

비슷한 말로는

처리하고자 하는 자료에 중점을 두고, 프로그래램 객체(Object)라는 것으로 모델화하는 프로그래밍입니다.


이렇게 말하면 이해가 안되는 분들이 더많으실겁니다.

솔직히 저도 이해가안됬었습니다...

그래서 그림으로 그려봤습니다.














절차지향에 비해 객체지향은 상당히 복잡한 구조도를 이루고있죠?

객체의 경우  각각의 객체들이 메시지라는 것을 통해 서로간의 객체들간의 원활한 통신을 주고받는 모습을 생각하시면 됩니다.


쉽게말해 절차지향은 카카오톡의 단톡방입니다.

객체지향 카카오톡의 개인톡입니다. 

각각의 사용자들이 다른 사용자에게 메시지를 주고받는것이죠. 원하는 결과를 얻기위한 통신수단입니다.




차이점은 무엇일까요?

절차지향의 경우 단톡방이다보니  톡방안에 일베충이 있다고 가정합니다.

일베충이 노무노무 하면서 고 노무현 대통령님의 사진을 언급합니다.

단톡방 전체가 삼엄하겠죠.


객체지향의 경우 개인톡이다보니 누가 일베충인지 누구에게 듣거나 증거자료를 보기 전까지는 모르니

지속적으로 대화를 하게됩니다.


자 그럼 본론으로 프로그래밍에서는

절차지향에서는 이렇다보니 한곳에서 문제가나면 전체가 중단되고 수정해야하는 반면에

객체지향에서는 한가지의 객체가 오류난다고해서 다른부분이 중단되지않습니다.

때문에 그 객체만을 수정하면되니 소스코드 또한 짧아지겠죠.

오류를 더 빨리 발견할수있고 일처리 능률 효율이 훨씬 상승합니다.



객체지향의 장점 :

1. 문제를 쉽고 자연스럽게 프로그램화(모델링) 할 수 있습니다.

2. 쉬운 프로그램의 개발로 인한 생산성을 향상시킬 수 있습니다.

3. 프로그램 모듈을 재사용할 수 있습니다.



객체 란 무엇일까요?

효율적으로 정보를 관리하기 위하여, 사람들이 직접 의미를 부여하고 분류하는 논리(개념)적인 단위

실세계에 존재하는 하나의 단위에 대한 소프트웨어적 표현이라고도합니다.




객체는 무엇으로 구성되있을까요?

ㆍ속성의 값을 나타내는 데이터(Data)

ㆍ데이터(Data)를 변경하거나 조작할 수 있는 메소드(Method)로 구성




이런식으로 객체는 프로그래머에 의해서 설계하는것을 말합니다.

나쁜 Yankee 라는 객체 속에

야동이라는 데이터가있고  야동을 본다라는 메소드가 있는것입니다.

객체란 데이터와 메소드를 지니고 있다는 것이지요.




객체지향의 3대 특징(요소)

캡슐화(Encapsulation) : 관련된 데이터와 알고리즘(코드)이 하나의 묶음으로 정리되어 있는 것이며,

개발자(Programmer)가 만들었으며 관련된 코드와 데이터가 묶여있고, 오류가 없어 사용에 편리합니다.

데이터(Data)를 감추고 외부세계와의 상호작용은 메소드(Method)를 통하는 방법입니다.

라이브러리(Library)로 만들어 업그레이드가 되면 쉽게 변경할 수 있습니다.


상속(inheritance) : 이미 작성된 클래스(Class)를 이어받아서 새로운 클래스(Class)를 생성하는 기법입니다.

기존의 코드를 재활용하기 위한 기법이기도 합니다.(객체지향의 가장 큰 장점)


다형성 : 하나의 이름(방법)으로 많은 상황에 대처하는 기법입니다.

개념적으로 동일한 작업을 하는 멤버 함수들에 똑같은 이름을 부여할 수 있으므로 코드가 더욱 간결(간단)해집니다.


728x90