1. 2. 객체지향을 이해합시다
이 장의 학습 내용
객체지향에 대하여
객체들은 어떻게 통신을 할까 ?
객체들은 다른 객체와 어떤 관계를 가질까 ?
어떻게 객체들을 결합시킬 수 있을까 ?
객체지향의 전통적인 시각과 새로운 시각
2. 객체지향을 이해하기에 앞서
객체지향이란 ? 객체 ( 사물 ) 의 존재방식에 주목하
여 , 데이터와 그 기능을 일체화하여 다루는 방법
도대체 무슨 말인지… ???
상속 , 폴리머피즘 , 캡슐화 … . 이건 또 무슨 말인지 ???
객체지향은 시작하기 힘들다 . 초보자는 안해도 된다 ???
주요 의문점들
객체지향 기술은 보급되어 있는가 ?
객체지향 기술은 배우기가 정말 어려운가 ?
객체지향 기술에 의한 개발은 기존의 방법과 어떻게 다른가
?
객체지향 기술을 채용하면 생산성이 향상되는가 ?
객체지향 기술을 이용하면 , SW 의 성능이 떨어진다는데 ?
3. 객체지향 기술은 보급되어 있는가 ?
구조적 프로그래밍 언어 : Cobol, C
객체지향 프로그래밍 언어 : Java, C++, C#
OODB(Object Oriented Data Base)
특히 Enterprise Application 에서 광범위하게 사용됨
상당수의 시스템이 Mainframe 기반 시스템에서 Unix 기반
Open 시스템으로 Down Sizing 되면서 개발언어를 Java
등 객체지향 언어로 구현함 .
Firmware 등 Embedded Application 은 아직 C 등 많이 사
용.
4. 객체지향 기술은 정말 배우기가 어려운가 ?
알아야 할 사항은 기존보다 분명 많음
상속 , 다형성 , 디자인 패턴…
SW 개발 자체가 비가시적이고 , 추상적이라 어려움 .
5. 객체지향은 기존의 설계 / 개발과 어떻게 다른
가?
본질적인 차이는 없음 . 단지 개발의 목표가 늘었을
뿐
기존의 방법은 요구되는 기능을 실현하여 , 제대로
동작하는 소프트웨어를 만든것이 최대의 목표
하지만 , 객체지향에서는 기존에서 더 나아가 “유지
보수와 재사용성을 향상시키는 것” 이 목표 (SW 위
기의 해결 )
고객의 요구사항은 지속적으로 변경되며 , SW 는 그
에 유연하게 대응할 수 있도록 설계 / 구현되어야 함
6. 객체지향을 이용하면 개발생산성이 향상되는
가?
객체지향을 이용한다고 결코 생산성이 향상되지 않음
객체지향을 사용하면 생산성이 향상되는 것이 아니
라 , 객체지향을 이용하여 생산성을 향상시키는 것임
!
어차피 객체지향은 도구 ( 수단 ) 이기 때문에 사용하
는 사람이 그 도구를 어떤 목적에으로 어떻게 사용하
는가에 따라 결과는 크게 바뀜
7. 객체지향 기술을 이용하면 SW 의 성능이 떨어
진다는데 ?
성능은 약간 나빠질수 있지만 , 하드웨어가 진보한
현재는 거의 신경 쓸 필요가 없다
그럼 성능의 제약 사항이 발생하는 Embedded 분야
는?
Kernal, Device 레이어의 프로그램은 전무 . 하지만
응용 application 에서는 Java 등이 활발하게 사용되
고 있는 추세
구글 안드로이드 기반 애플리케이션