没有合适的资源?快使用搜索试试~ 我知道了~
首页《Head First OOA&D》:面向实践者的软件设计入门指南
《Head First OOA&D》:面向实践者的软件设计入门指南
5星 · 超过95%的资源 需积分: 22 118 下载量 161 浏览量
更新于2024-07-18
收藏 22.35MB PDF 举报
"Head First Object-Oriented Analysis & Design(简称HFOOAD)是一本针对面向对象分析与设计(Object-Oriented Analysis & Design, OOA & D)领域的开创性著作。这本书以其独特的方法和视角在众多同类书籍中脱颖而出。它的核心理念是注重学习实践,而不是仅仅理论讲解。作者们深刻理解到,未来的软件开发趋势将更加倾向于实践者的实际操作能力。 Ivar Jacobson, Ivar Jacobson Consulting的创始人,高度评价了这本书,他认为市面上许多关于OOA & D的书籍虽然能解释原理,但往往缺乏让开发者真正开始项目的能力。HFOOAD则不同,它强调内容的实用性,旨在帮助读者快速掌握UML(统一建模语言)和用例分析等核心概念,并深入讲解如何进行优秀软件设计。作者通过清晰、易懂的方式,引导读者理解为什么进行OOA & D,其目标是为了写出高质量的软件。 书中不仅涵盖了对象导向分析的基本步骤,还着重探讨了如何通过每个阶段的设计决策推动实现编写出色软件的目标。这对于即使是经验丰富的Java程序员来说,也是一本能够启发他们理解OOA & D重要性的入门佳作。因此,HFOOAD不仅适合初学者,也是任何希望提升设计技能的软件工程师的理想选择。 阅读这本书,读者不仅能获得扎实的OOA & D技术知识,还能学会如何将这些理论应用到实际项目中,从而提高软件开发的效率和质量。对于软件工程教育和职业发展来说,这是一本不可多得的实用指南。"
资源详情
资源推荐
xiv
table of contents
5 (part 1)
Nothing Ever Stays the Same
Change is inevitable. No matter how much you like your software right
now, it’s probably going to change tomorrow. And the harder you make it for
your software to change, the more difcult it’s going to be to respond to your
customer’s changing needs. In this chapter, we’re going to revisit an old friend,
try and improve an existing software project, and see how small changes can
turn into big problems. In fact, we’re going to uncover a problem so big that it will
take a TWO-PART chapter to solve it!
good design = flexible software
Rick’s Guitars is expanding 198
Abstract classes 201
Class diagrams dissected (again) 206
UML Cheat Sheet 207
Design problem tipoffs 213
3 steps to great software (revisited) 215
5 (interlude)
$100$100$100$100$100
$200$200$200$200$200
$300$300$300$300$300
$400$400$400$400$400
Software
Neuroses
Maintenance
and Reuse
Code
Constructs
Famous
Designers
Risk
Avoidance
xv
table of contents
5 (part 2)
Give Your Software a 30-minute Workout
Ever wished you were just a bit more flexible?
When you run into problems making changes to your application, it probably
means that your software needs to be more exible and resilient. To help stretch
your application out, you’re going to do some analysis, a whole lot of design, and
learn how OO principles can really loosen up your application. And for the grand
nale, you’ll see how higher cohesion can really help your coupling. Sound
interesting? Turn the page, and let’s get back to xing that inexible application.
good design = flexible software
Back to Rick’s search tool 234
A closer look at the search() method 237
The benets of analysis 238
Classes are about behavior 241
Death of a design (decision) 246
Turn bad design decisions into good ones 247
“Double encapsulation” in Rick’s software 249
Never be afraid to make mistakes 255
Rick’s exible application 258
Test driving well-designed software 261
How easy is it to change Rick’s software? 265
The Great Ease-of-Change Challenge 266
A cohesive class does one thing really well 269
The design/cohesion lifecycle 272
Great software is “good enough” 274
OOA&D Toolbox 276
xvi
table of contents
6
“My Name is Art Vandelay... I am an Architect”
It’s time to build something REALLY BIG. Are you ready?
You’ve got a ton of tools in your OOA&D toolbox, but how do you use those tools
when you have to build something really big? Well, you may not realize it, but
you’ve got everything you need to handle big problems. We’ll learn about some
new tools, like domain analysis and use case diagrams, but even these new tools
are based on things you already know about—like listening to the customer and
understanding what you’re going to build before you start writing code. Get ready...
it’s time to start playing the architect.
solving really big problems
Solving big problems 280
It’s all in how you look at the big problem 281
Requirements and use cases are a good place to start... 286
Commonality and variability 287
Figure out the features 290
The difference between features and requirements 292
Use cases don’t always help you see the big picture 294
Use case diagrams 296
The Little Actor 301
Actors are people, too (well, not always) 302
Let’s do a little domain analysis 307
Divide and conquer 309
Don’t forget who the customer really is 313
What’s a design pattern? 315
The power of OOA&D (and a little common sense) 318
OOA&D Toolbox 320
Small
Problem
Small
Problem
Small
Problem
Small
Problem
Big
Problem
This BIG PROBLEM is
really just a collection of
functionalities, where each
piece of functionality is really
a smaller problem on its own.
Small
Problem
xvii
table of contents
7
Bringing Order to Chaos
You have to start somewhere, but you better pick the
right
somewhere! You know how to break your application up into lots of small
problems, but all that means is that you have LOTS of small problems. In this chapter,
we’re going to help you gure out where to start, and make sure that you don’t waste
any time working on the wrong things. It’s time to take all those little pieces laying
around your workspace, and gure out how to turn them into a well-ordered, well-
designed application. Along the way, you’ll learn about the all-important 3 Qs of
architecture, and how Risk is a lot more than just a cool war game from the ‘80s.
architecture
Feeling a little overwhelmed? 324
We need an architecture 326
Start with functionality 329
What’s architecturally signicant? 331
The three Qs of architecture 332
Reducing risk 338
Scenarios help reduce risk 341
Focus on one feature at a time 349
Architecture is your design structure 351
Commonality revisited 355
Commonality Analysis: the path to exible software 361
What does it mean? Ask the customer 366
Reducing risk helps you write great software 371
Bullet Points 372
Giant Risk-O-Meter
Unit
type: String
properties: Map
setType(String)
getType(): String
setProperty(String, Object)
getProperty(String): Object
Board.java
class
Unit {
Unit(){
}
}
Unit.java
class
Tile
{ ge-
tUnit()
}
Tile.java
class
Board
{ ge-
tUnit()
}
Not a chance in hell of
coming in on time.
One in a hundred that
you get it right.
Only a few things can
go really wrong.
As close to a sure
thing as software gets!
xviii
table of contents
8
Originality is Overrated
Imitation is the sincerest form of not being stupid. There’s
nothing as satisfying as coming up with a completely new and original solution to a
problem that’s been troubling you for days—until you nd out someone else solved
the same problem, long before you did, and did an even better job than you did! In
this chapter, we’re going to look at some design principles that people have come up
with over the years, and how they can make you a better programmer. Lay aside your
thoughts of “doing it your way”; this chapter is about doing it the smarter, faster way.
design principles
Design principle roundup 376
The Open-Closed Principle (OCP) 377
T
he OCP, step-by-step 379
The Don’t Repeat Yourself Principle (DRY) 382
DRY is about one requirement in one place 384
The Single Responsibility Principle (SRP) 390
Spotting multiple responsibilities 392
Going from multiple responsibilities to a single responsibility 395
The Liskov Substitution Principle (LSP) 400
Misusing subclassing: a case study in misuing inheritance 401
LSP reveals hidden problems with your inheritance structure 402
Subtypes must be substitutable for their base types 403
Violating the LSP makes for confusing code 404
Delegate functionality to another class 406
Use composition to assemble behaviors from other classes 408
Aggregation: composition, without the abrupt ending 412
Aggregation versus composition 413
Inheritance is just one option 414
Bullet Points 417
OOA&D Toolbox 418
The Open-Closed
Principle
The Don’t Repeat
Yourself Principle
The Single
Responsibility Principle
The Liskov
Substitution
Principle
剩余635页未读,继续阅读
hanshiwangzi
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 多模态联合稀疏表示在视频目标跟踪中的应用
- Kubernetes资源管控与Gardener开源软件实践解析
- MPI集群监控与负载平衡策略
- 自动化PHP安全漏洞检测:静态代码分析与数据流方法
- 青苔数据CEO程永:技术生态与阿里云开放创新
- 制造业转型: HyperX引领企业上云策略
- 赵维五分享:航空工业电子采购上云实战与运维策略
- 单片机控制的LED点阵显示屏设计及其实现
- 驻云科技李俊涛:AI驱动的云上服务新趋势与挑战
- 6LoWPAN物联网边界路由器:设计与实现
- 猩便利工程师仲小玉:Terraform云资源管理最佳实践与团队协作
- 类差分度改进的互信息特征选择提升文本分类性能
- VERITAS与阿里云合作的混合云转型与数据保护方案
- 云制造中的生产线仿真模型设计与虚拟化研究
- 汪洋在PostgresChina2018分享:高可用 PostgreSQL 工具与架构设计
- 2018 PostgresChina大会:阿里云时空引擎Ganos在PostgreSQL中的创新应用与多模型存储
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功