'OOP'에 해당되는 글 3건

  1. 2008/04/04 Design : Object-oriented Design
  2. 2007/09/10 AOP : Aspect Oriented Programming (2)
  3. 2005/07/09 Object Oriented software design principle?
본 포스트는 개인 스터디 용으로 작성된 Ian Sommerville의 Software Engineering, 8/E의 요약본입니다.
1. Object-oriented development
- Object-oriented analysis, design and programming are related but distincted.
- OOA is concerned with developing an object model of the application domain.
- OOD is cencerned with developing an object-oriented system model to implement requirements
- OOP is cencerned with realising an OOD using an OO programming language

2. Characteristics of OOD
- Objects are abstractions of real-world or system entities and manage themselves
- indenpendent with each other, encapsulate state, communicate by message passing

3. Objects and object classes
- Objects are entities in a S/W system which represent instances of real-world and system entities
- Object classes are templates for objects

4. UML
- An integration of notations which describe object oriented analysis and designs
- De facto standard for object oriented modelling

5. Object communication
- Conceptually, objects communicate by message passing
- In practice, messages are often implemented by procedure calls(procedure name and parameter list)

6. Generalisation and inheritance
- Classes may be arranged in a class hierarchy where one class (a super-class) is a generalisation of one or more other classes (sub-classes)
- A sub-class inherits the attributes and operations from its super class and may add new methods or atributes of its own
- Advantages : Inheritance classify entities, make reuse mechanism at both the design & the programming level, and provide organisational knowledge about domains and systems.

7. An object-oriented design process : Structured design processes
- involve developing a number of differnet system models
- require a lot of effort for development and maintenance of these models
- For small systems, this may not be cost-effiective
- However, for large systems developed by different groups design models are an essential communication mechanism

8. Process stages
1) Define system context and model of system use : A static model that describes other systems in the environment, a dynamic model that describes how the system interacts with its environment(Use Case used)
2) Design the system architecture : e.g. layered architecture(several layered sub-system composition). There should normally be no more than 7 entities in an architectural model
3) Identify the principal system objects:
  - Grammatical approach (based on natural lagnuage)
  - idenfitying concrete things in the application domain
  - Behavioural approach (what participates in what behaviour)
  - Scenario-based analysis (objects in scenario)
4) Develop design models
  - Static model : show relationships between object classes
  - Dynamic model : show relationships between objects
  - e.g. sub-system model, sequence model, state machine model(statechart), use-case models, aggregation, generalisation model, etc.
5) Object interface specification
  - Object interfaces have to be specified so that the object and other components can be designed in parallel
  - UML uses class diagram
2008/04/04 18:25 2008/04/04 18:25

트랙백 주소 :: http://anyflow.net/trackback/377

댓글을 달아 주세요

AOP(Aspect Oriented Programming)


AOP의 정의
핵심 가치와 목적이 드러나는 핵심 관심(core concerns) 영역에서 각 핵심 관심을 관통하는 횡단 관심(crosscutting concerns)을 분리함으로써 시스템의 모듈화를 이뤄내는 새로운 프로그래밍 패러다임.

사용자 삽입 이미지
- 핵심 관심: 해당 애플리케이션이 이루고자하는 주 목적.
- 횡단 관심: 애플리케이션의 기반이 되는 기능 영역

more..

2007/09/10 20:40 2007/09/10 20:40

트랙백 주소 :: http://anyflow.net/trackback/233

댓글을 달아 주세요

  1. 성재경 기술사 2007/09/14 10:05  댓글주소  수정/삭제  댓글쓰기

    위 그림 어디서 많이 본거 같지 않아요? 자크만 프레임워크 함 보세요...
    재미있는 연결이 가능합니다. ^^;

    • 어쨌건간에 2007/09/14 16:46  댓글주소  수정/삭제

      윗 그림과 자크만 사이에 숨겨진 연관성이 있군요!

      아직 자크만 프레임워크를 정리하지 않았는데, 여기저기서 자크만을 언급하는 것으로 보아 따로 정리해둘 필요성을 느끼고 있었습니다. 빨랑 함 정리해보아야겠군요.

기억해 두거라. 추상화, 상속, 다형성이란 개념을 알았다고 해서 네가 훌륭한 객체 지향 설계자가 되는 것은 아닐지어다. 진정한 구루는 어떻게 하면 유연성을 갖도록 설계를 하여, 유지보수가 용이하고 변화에 능동적으로 대응할 지에 관해 고민을 한다. (알겠느뇨?)

Remember, knowing concepts abstraction, inheritance, and polymorphism do not make you a good object oriented designer. A design guru thinks about how to create flexible designs that are maintainable and that can cope with change.


- guru틱한 자세로 앉아있는 어떤 인도여자 왈(in Head First Design Pattern) -
stroustrup 이 C를 제껴놓고 C++를 만들 때 추구했던 목표 중 하나는 속도 향상이 아니라 유지보수성(maintainability) 향상이 아니었을까? 다시 말하자면 그의 목표는 C보다 나은 유지보수성을 갖춘 언어를 만드는 것에 있지 않았을까?
아니 좀더 일반화하여, Object Oriented Programming이라는 개발 방법론의 탄생 배경에는 보다 나은 유지보수성을 갖춘 프로그래밍 방법론이라는 목표가 담겨있지 않았을까?

그러한 최종 목표를 달성하기 위해 그들(OOP의 선구자들)은 코드 가독성(readibility)을 높이는 데 더 많은 신경을 쓰지 않았을까?

됀장.. 당장에 쓰고있는 언어, 내 밥줄을 잡고 있는 언어.. 여기에 담긴 제작자의 의도를 이제서야 파악하려 하고 있다.. 헐헐..


p.s 만약 나의 생각이 맞다면.. 그들 역시 나처럼 유지보수하는 데에 똥빠지도록 고생하였을 것이 분명하다.. 오죽 고생했으면 잘나가던 언어(C)를 놔두고 새로 만들 생각까지나 했겠어?
2005/07/09 16:39 2005/07/09 16:39

트랙백 주소 :: http://anyflow.net/trackback/31

댓글을 달아 주세요