抽象思维是什么意思| 布洛芬不能和什么一起吃| 臃肿是什么意思| 破溃是什么意思| 肝不好有些什么症状| 一什么波纹| 血压什么时间测量最准| 覆盆子有什么作用| 邋遢什么意思| 中央型肺ca是什么意思| 什么样的人容易低血糖| rip是什么意思| 肛门胀痛什么原因| 中国科协是什么级别| 农历五月二十四是什么星座| 煜这个字读什么| mhc是什么意思| 什么药能治口臭| dragon是什么意思| 医院介入科是干什么的| 半夏反什么药| 头上长了个包挂什么科| 人肉是什么味道| 身上湿气重吃什么药| aoerbo是什么牌子的手表| 糖化血红蛋白高是什么原因| 过桥米线为什么叫过桥| 勤对什么| 来例假吃什么好| 家婆是什么意思| 囊变是什么意思| 胃经常胀气是什么原因| 痹症是什么病| 宝宝支气管炎吃什么药| 经常泡脚有什么好处| 择日不如撞日什么意思| 水瓜壳煲水有什么功效| 用什么方法可以戒酒| 父亲节送爸爸什么| 低gi什么意思| 酒后喝什么饮料比较好| 9.29是什么星座| 高烧不退是什么原因| 鸡与什么生肖相合| 透骨草治什么病最有效| mask是什么意思| 酸萝卜别吃什么意思| 寻常疣用什么药膏| 梦见四条蛇是什么意思| 阴山是今天的什么地方| 饮食清淡的标准是什么| 大便潜血什么意思| 糖化血红蛋白是查什么的| 头发大把大把的掉是什么原因| 平痛新又叫什么| 阴毛的作用是什么| 感冒喉咙痛吃什么药好| 粉尘螨是什么东西| 见什么知什么| 势力是什么意思| 丑拒是什么意思| 十一月份出生的是什么星座| 肾炎是什么症状| 脚底发红是什么原因| 家里进鸟了是什么预兆| 打压什么意思| 血肿是什么意思| 甘油三酯代表什么| 梦见蛇缠身是什么意思| 舅舅的儿子叫什么| 总打嗝是什么原因| 梦见好多猫是什么预兆| mr是什么意思| 沙漠为什么是三点水| 睾丸痛吃什么消炎药| 平均红细胞体积偏低是什么原因| 舌头裂纹吃什么药| 珩五行属什么| 芡实不能和什么一起吃| 牙齿根管治疗是什么意思| 骨刺是什么症状| 高血压检查什么项目| 贫血是什么原因造成的| 鲅鱼是什么鱼| 蝴蝶是什么变的| jhs空调是什么牌子| 煦字五行属什么| 梦见把狗打死了是什么意思| 腹泻吃什么消炎药| xswl什么意思| 馐什么意思| 啤酒酵母是什么| 4个月念什么字| 白塞病是什么病| 什么药是消炎药| 闲暇的意思是什么| 火字旁的有什么字| 属牛的五行属性是什么| 为什么坐月子不能吹风| bbs是什么意思| wis是什么牌子| 什么中药| 小鸟喜欢吃什么食物| 什么是御姐| 孕妇吃海参对胎儿有什么好处| 买碗有什么讲究| 什么时间英语| 准备好了吗时刻准备着是什么歌| 六允读什么| 中药一般什么时候喝最好| 突然头晕是什么原因| 区法院院长是什么级别| 吃什么补肺| 什么是原生家庭| 天下乌鸦一般黑是什么意思| 白痰多是什么原因造成的| 补血吃什么药最快最好| 什么叫低钾血症| 辟加木念什么| 什么的鼻子填词形容词| 肚脐有分泌物还发臭是什么原因| 性生活时间短吃什么药| 蓝色妖姬适合送什么人| 金国人是现在的什么人| 律的右边读什么| 水果都有什么| 喝中药尿黄是什么原因| 大致是什么意思| 10月31日什么星座| 看淡一切对什么都没兴趣| 初中毕业可以考什么证| 唇炎是什么原因引起的| 玫琳凯属于什么档次| 强势的人有什么特点| 蜕膜是什么| 枯木逢春什么意思| 诺五行属什么| 水为什么是绿色的| 1921年属什么生肖| 又什么又什么的草地| 身体出现白斑有可能患什么病| 刺五加配什么药治失眠| 箱涵是什么| 2月13号是什么星座| 心理活动是什么意思| 异想天开是什么意思| 吃菠萝有什么好处| 不孕不育查什么项目| 50肩是什么意思| 梦见建房子是什么预兆| 什么是妈宝男| 舌苔厚白中间有裂纹吃什么药| 水疗是什么| 蚂蚁为什么要搬家| 什么的尾巴长不了歇后语| 刚怀孕有什么办法打掉| 颈椎曲度变直是什么意思| 柠檬泡水喝有什么好处| 癸未日五行属什么| 雌二醇e2是什么意思| 乳酸杆菌少或无是什么意思| 社区建档需要什么资料| 飞吻是什么意思| 耐药性是什么意思| jnby是什么牌子| 生完孩子吃什么补身体| 皮肤发痒用什么药| 02属什么| 多吃菠萝有什么好处| 用什么刷牙能使牙齿变白| 2014年属什么生肖| 球代表什么生肖| 泡脚什么时候泡最好| 四月八日是什么星座| vb是什么| 梦见一个人代表什么| 什么是c刊| 什么是植物| 750是什么材质| 芋头不能和什么一起吃| amp是什么| 间接胆红素偏高是什么意思| 血糖高喝什么好| 射手属于什么象星座| 颈动脉斑块做什么检查| 探病送什么花| 为什么会得脑梗| 樵夫是什么生肖| 吉兆什么意思| 专一是什么意思| 津液不足吃什么中成药| 胃不舒服做什么检查| barbour是什么牌子| 玫瑰花的花语是什么| 憋尿憋不住是什么原因| 什么芦荟可以直接擦脸| 光纤和宽带有什么区别| 小孩睡觉磨牙是什么原因引起的| 影响是什么意思| 男生留什么发型好看| 老年人口苦是什么原因| 你在纠结什么| 啮齿类动物什么意思| 呼吸内科主要看什么病| 两个a型血的人生的孩子什么血型| 受精卵着床有什么反应| 鸡子是什么| 绝经后子宫内膜增厚是什么原因| 八月十八号是什么星座| 为什么一吃辣的就拉肚子| 摩什么擦什么| 三伏天什么时候最热| 肝病去医院挂什么科| lp是什么的简称| 白细胞酯酶阳性什么意思| 养鱼为什么养单不养双| 睡觉天天做梦是什么原因| 密度单位是什么| hp医学上是什么意思| 鲔鱼是什么鱼| 什么叫韵母| 杨梅泡酒有什么功效和作用| 心肌标志物是查什么的| 药物制剂是干什么的| 梦见一条大蟒蛇是什么征兆| 低钾是什么原因造成的| 经期适合喝什么汤| 什么病不能吃西兰花| kw是什么单位| 恶心吃什么药| 什么病会引起皮肤瘙痒| 小儿厌食吃什么药最好| 吃什么升血小板快| 吃什么水果能美白| 为什么每天晚上睡觉都做梦| 祛火喝什么茶| 吃什么对心脏有好处| 流产期间吃什么好| 什么情况下会得荨麻疹| 1978年属什么生肖| 没有胎心胎芽是什么原因造成的| 豆腐和什么不能一起吃| 什么路不能走| 脚底疼是什么原因引起的| 阴囊潮湿瘙痒用什么药| 男人手大代表什么| 下午三点是什么时辰| 沙门氏菌是什么| 10年什么婚| 露从今夜白下一句是什么| 欧米茄属于什么档次| 30如狼40如虎是什么意思| 藿香正气水什么味| tct检查什么项目| 乌鸦嘴是什么意思| 西安有什么区| 脑袋进水什么意思| 女性漏尿吃什么药最好| 龙虾和什么不能一起吃| pef是什么意思| 怀孕吸烟对胎儿有什么影响| 遗精是什么原因| 小肚子胀是什么原因| 什么人不适合吃榴莲| 百度Jump to content

球球大作战一键卡白房软件防封版 v2.75

From Wikiversity
百度 要加强党性修养,强化纪律意识和底线思维,高度警惕“围猎”风险,守住公私分明的界限。

Object Oriented Software Design is an abstract practice that relates to Software Engineering or Computer Programming.

Schools: Computer Science | Engineering | Mathematics

Browse: Engineering and Technology

Background

[edit | edit source]

Before software can be created, its purpose must be defined. The design of a piece of software is usually captured in some kind of document—all but the most trivial software projects benefit from good design documentation, particularly when there is more than one participant involved in the creation of the software. Two major classes of design documentation have been placed into practice:

  1. Requirements – The requirements define the intended functionality of the software for users and external systems. For example, one requirement of an automated teller machine is that the users that meet certain criteria must be able to withdraw cash.
  2. Specifications – The specifications state the constraints that must be met by users and external systems before the software will function properly (as defined by the requirements). For example, part of the specification of some automated teller machines is that the user must bring a bank card and swipe it in the machine. Users who do not comply with this part of the specification will be unable to use it.

The initial practice of designing software often focuses on creating work products that capture the desired requirements and specifications of the proposed software. There are many different approaches to software design, but most software will never reach a point where all of the desired requirements are met because the requirements will change and grow as soon as the software goes into use. So, software design is principally concerned with designing software that is expected to continuously evolve to meet an ever-changing list of requirements. It is far easier to make sense of software design and development processes when this crucially important, but subtle notion is grasped: good design is about creating software that can evolve and adapt over a long period of time and an indefinite number of versions, it is not chiefly concerned with creating a pristine finished product that is intended to remain untouched upon completion.

The first software was designed with a procedural paradigm in mind. The procedural paradigm envisions software simply as a list of instructions, usually contained across many files, to be executed. As computers became more powerful, programs grew to a size that made this approach unmanageable without adopting designs specifying complex organizational procedures for keeping track of all of the files containing these instructions. Since then, many programming paradigms have been envisioned, the most popular of which is the object oriented paradigm.

Supporting the object oriented paradigm is the process of object oriented design, or OOD. OOD aims to design software such that it is broken up into manageable chunks called classes. A class is a unit of code that contains information and defines behaviors that manage that information. In this way, the information managed by the class can only be changed by the outside world in the ways defined by the class. The world outside that class need not understand the details of how such information must be manipulated; ensuring that the information is complete and consistent is managed within the class itself, greatly simplifying the task of working with that information for the outside world.

Basics: Classes & Inheritance

[edit | edit source]

The fundamental unit of an object oriented system is the class. A class is a set of data and the behaviors that operate upon that data. Each behavior is captured in a method, which is a function associated with a class. A class defines a type of object that can exist within the system.

It is instructive to consider an example. An object is related to its class much in the same way a specific dog (let's call him Rover) is related to the class of all dogs. In the object oriented approach we say that Rover is an instance of a dog. Similarly, we would refer to an object as an instance of a particular class. Just as Rover and Fido are two distinct instances of dogs, at any given time there may be many instances of a particular class existing in an object oriented system.

If we are designing an object oriented system designed to represent dogs, then, we would use this analogy to create a class called Dog. On this class we can define variables like hairColor, hairLength, eyeColor, weight, height, etc. We can also define behaviors that all dogs share such as eat(), sleep(), bark(), and run(). The behaviors we define may use the state stored in the variables to determine how to correctly carry out the behavior (for instance, a large dog will eat more and bark louder than a small dog). When we instantiate, or create, a new dog we would initialize it with all the properties of the specific dog we wish to represent. So, even though we'd have two instances of the Dog class in our system, fido and rover, they would exhibit the same behaviors in different ways based on their individual state.

There are three principles fundamental to the definition of all object oriented software: encapsulation, inheritance, and polymorphism. We will discuss each in turn, but it's important to realize that all three principles work in combination to define a particular class.

The principle of encapsulation refers to the scope and visibility of state within a class. It is important for each class to define behaviors usable by the outside world in such a way that the internal state is not known outside the object, nor would it be necessary for that state to be known for objects of the class to serve a purpose within the system. Encapsulation goes hand-in-hand with the principle of information hiding, which says that any information that need not be known by outside agents should be hidden from view. In this way, the outside world sees only what it needs to see in order to use the object, simplifying its usage. To use the example above, the eat() method of our Dog class might use a very complex algorithm based on the weight, height, and any other characteristics of that particular dog to calculate how much food it should eat when invoked. The outside world ought to regard the particular process used by the class with disinterest—it simply calls the eat() method and, from that outside perspective, the dog eats.

Inheritance refers to a particular relationship that two or more classes can share. After we define our Dog class, we may wish to design some classes that represent particular breeds: German Shepherd, Pointer, and Retriever, for example. All of these are different kinds of dogs. As such, any behavior or characteristic our more generic Dog class contains ought to also be contained by each of these classes. It would be a terrible waste of effort, however, to duplicate all of the work we've done defining those characteristics and behaviors on the Dog class. Furthermore, whenever we update such code shared by all dogs (such as when fixing a bug), we would have to apply the same update to all classes with copies of that same code. Fortunately, because object oriented systems allow inheritance, we need not define the same functionality multiple times. We can simply say that the different breeds of dog extend or inherit from the Dog class, and instances of those classes automatically get all of the characteristics and behaviors defined on Dog.

Polymorphism refers to a particular feature of classes that define an inheritance relationship. Above, we said that a Pointer is a specific kind of Dog, and therefore the Pointer class can extend the Dog class. Once this inheritance-type relationship is defined between these two classes, the outside world can treat any pointer specifically as a pointer, or it may also treat it more generally as simply a dog. When dealing with a particular instance, in fact, the outside world need not even know its dealing with a pointer. For example, if the Pointer class defines an additional behavior unique to pointers, such as point(), when dealing with an instance of the Pointer class—let's call this particular dog pointy—we may invoke the point() method and observe Pointy point. However, if we are only interested in requesting that Pointy do things that all dogs can do, such as eat() and sleep(), we may forget altogether that Pointy is in fact a Pointer and simply treat him just as though he were directly an instance of the Dog class. Polymorphism is the ability of objects to behave as though they are instances of a superclass.

Design Patterns

[edit | edit source]

Design patterns are well-recognized solutions to common design requirements. These are strongly recommended to study, as they provide clean & effective solutions which may be commonly used in many places throughout an application design. For learners, they provide good design options with less need to carefully evaluate OO principles.

The 'Gang of Four' Design Patterns book originally propelled design patterns to popularity.

Patterns are divided into 3 categories; addressing 'creation', 'structure', and 'behavioral' patterns.

Patterns of especial note include:-

Creational

[edit | edit source]

Structural

[edit | edit source]

Behavioral

[edit | edit source]


Considering & communicating OO design requires a common language to be understood. For OO, the most popular formalism -- besides code itself -- is UML.

UML defines widely-recognized diagrams such as Class diagram, Activity diagram, Use-Case diagram and Sequence diagrams which can effectively formalize & communicate design.

OO Principles

[edit | edit source]

Beyond a few classes, there become many possibilities with how to place behavior & structure responsibility in an OO design. OO principles help provide guidelines & metrics by which _good design_ could be formalized. They go beyond Design Patterns (though most were invented earlier); they provide the justification & underpinning by which design patterns were originally identified.

Various principles have been suggested or formalized. These include:

  1. preferring Composition/ Delegation to Inheritance;
  2. Law of Demeter
  3. Single responsibility principle
  4. Open/closed principle
  5. Liskov substitution principle
  6. Interface segregation principle
  7. Dependency inversion principle
  8. OO is more about 'doing' than 'being'

Statements of OO as a systematic set of principles include:

  1. SOLID: the "first 5 principles" for OO design
  2. GRASP: principles for assigning responsibility

About this lesson

[edit | edit source]

Contributors, Mirwin, CQ and Twhitmore.nz can take you more deeply into this study, if you care to read on. If you know this topic and have something to contribute, You are quite welcome to sign up at the bottom of the page. Anyone can edit this page or contribute anonymously.

Anyone can ask a question, post a comment or read in-depth discussion on the Talk page.


Where would you like to go from here?


Instructor picks: Software Engineering ? Object-Oriented Programming ? UML - Unified Modeling Language

Other Kinds of Computer Programming

Resources

[edit | edit source]

Below are some Object Oriented Software Design learning materials and more links

[edit | edit source]

Data Structures and Algorithms with Object-Oriented Design Patterns in Java [1]

An index of object oriented technologies and online reference materials. [2]

A Stanford Course Page with useful links. [3]

Introductory Articles

[edit | edit source]

The articles listed and linked to directly below are written by Matt Weisfeld are [www.developer.com available to read for free] and are good starting points for chapters in a book he has written. The Thought Process, is also available.

  1. The Object-Oriented Thought Process
  2. Moving from Procedural to Object-Oriented Development
  3. Object Relationships
  4. Thinking in Objects
  5. Furthering the Object-Oriented Mindset
  6. Exploring Encapsulation
  7. Hiding Data within Object-Oriented Programming
  8. Protecting Data through Object Oriented Programming
  9. Putting an Object in a Safe State
  10. The Components of a Class
  11. The Evolution of Object-Oriented Languages
  12. Object Responsibility
  13. Object Construction
  14. Inside Constructors
  15. Encapsulation vs. Inheritance
  16. Packaging Objects to Preserve Encapsulation
  17. Object Signatures
  18. Object Serialization
  19. Connecting to a Database with JDBC
  20. Using More Advanced JDBC Features
  21. Serializing an Object via a Client/Server Connection
  22. Objects and Client/Server Connections
  23. Primitives and Object Wrappers
  24. Objects and Collections
  25. Objects and Collections: Vectors
  26. Objects and Collections: ArrayLists
  27. Objects and Interfaces
  28. Designing with Interfaces and Abstract Classes

The articles listed and linked to directly below are written by Matt Weisfeld are [www.developer.com available to read for free] and are good starting points for chapters in a book he has written. The Thought Process, is also available.

Local Topics

[edit | edit source]

Design Patterns - A design pattern is a recurring theme that people have found in software engineering. It is a template from which a new solution may be tailored to fit the current design challenge.

Using design patterns is greatly assisted by an adequate UML (Unified Modeling Language) diagraming tool. One such is [[4]].
A good exercise for learner here would be to find a design pattern one needs to learn or can use productively somewhere in a real design. Users can then submit some good examples from the detailed design documentation related to the pattern here. These figures can be discussed and improved here at Wikiversity and presented to Wikipedia or Wikibooks.
A set of design patterns expressed online in UML and English. [5]

See also:

Participants, Goals, and Proposed Methods

[edit | edit source]

Tell us about yourself and what you intend to do here.

  • Mirwin 09:56, 3 November 2006 (UTC) I intend to engage in studying, hunting and gathering around the web while learning to do object oriented design in Java using free tools. I will place links to nuggets here and some notes and thoughts regarding design issues and problems. Currently I am working on little space games and jFreeRails for practical design, coding, testing and debugging experience with the fine free automation tools, operating systems and applications now available online.
The java learners or already enabled may be interested in this subtrail Practical Object Oriented Game Design in Java which the game designersA_Hands-On_Introduction_to_Game_Design_and_Production_Processes have set up for their hackers and software engineers. These trails are supporting the community learning project designing the cisLunarFreighter game.
  • CQ 18:56, 3 November 2006 (UTC) Ditto on Mirwin's objectives, but I'm more Perl-oriented than Java. I'm also interested in develping a greater understanding of UML and applying it to modeling and diagramming MediaWiki and perhaps even Wikiversity itself using open source/free UML tools.
  • Severoon 10:37, 19 January 2008 (UTC) I am a full-time software development professional currently employed in a technology-forward research & development lab. I have over 10 years experience in the industry with a strong focus on Java enterprise systems. In the last year I have taken on primarily architectural and project lead responsibilities. Besides having written most of the content above, I intend to capture on these pages the most important aspects of object-oriented design and development.
  • TW (discuss ? contribs) 05:32, 7 October 2015 (UTC) As an architect with 20 years experience, I'm interested to bring some insights into Design Patterns, OO guidelines & actual use of OO in solving non-trivial software problems.
  • sign up here!
七月份有什么节日吗 会厌炎是什么病 一流是什么意思 4月23是什么星座 瘦马是什么意思
眼睛飞蚊症用什么药能治好 肚脐眼发炎是什么原因 什么相处 金牛男最烦什么女孩 海凉粉是什么做的
男人分手是什么感觉 智齿吃什么消炎药 石头记为什么叫红楼梦 合肥什么时候出梅 zgo手表是什么牌子
什么贤什么能 办理出院手续都需要什么 左耳发热是什么预兆 豆浆和豆奶有什么区别 为什么会得人乳头瘤病毒
高筋面粉和低筋面粉有什么区别hcv9jop2ns6r.cn 八面玲珑指什么生肖hcv7jop6ns5r.cn 什么都不怕hcv9jop5ns5r.cn 子宫附件是什么hcv9jop7ns4r.cn 什么狗最贵hcv7jop6ns7r.cn
肋间神经炎吃什么药hcv8jop6ns7r.cn 为什么叫买东西不叫买南北hcv8jop7ns5r.cn 驴板肠是什么部位chuanglingweilai.com cfp是什么证书hcv7jop6ns5r.cn 三十八岁属什么生肖helloaicloud.com
汗蒸有什么好处hcv8jop2ns0r.cn 6月28号是什么星座hcv9jop7ns0r.cn 五谷有什么hlguo.com 10月28是什么星座beikeqingting.com 狗狗有什么品种weuuu.com
土界读什么hcv8jop4ns9r.cn 羊水破了有什么感觉adwl56.com 土固念什么onlinewuye.com 水的ph值是什么意思hcv7jop7ns4r.cn 单脐动脉是什么意思naasee.com
百度