Smalltalk 的五个基本特征:
任何事物都是对象;
程序是对象的集合,对象之间通过消息来通讯;
每个对象都有自己的内存;
每个对象都有类型;
特定类型的所有对象都可以接受相同的消息;
Booch 的表述:对象有状态、行为和身份。
对象包含接口 An object has an interface
在面向对象的编程中,创建类是最基础的概念。
面向对象编程的一大挑战是创建问题空间中的元素和解决方案空间中的对象之间的映射关系。
接口决定你对特定对象所能发出的请求。
对象提供服务 An object provides services
当我们开发或理解程序设计时,最好的方法是考虑对象作为“服务提供者”。
高内聚是高质量软件设计的基础。
隐藏执行 The hidden implementation
在任何关系中,涉及各方之间的界限是非常重要的。
访问控制的原因是保持客户端开发人员只接触到可以接触的,另外组件库的设计者也可以改变类内部的工作方式而无需担心改动会影响客户端开发人员。
重用执行 Reusing the implementation
聚合是一种特别类型的关联,用于描述“总体到局部”的关系。
基本聚合:部分类的生命周期独立于整体类的生命周期。
组合聚合:部分类的生命周期并不独立于整体类的生命周期(公司部门)。
继承 Inheritance
Is-a 和 is-like-a 的关系
纯替换也称为Is-a关系,例如A circle is a shape。
子类除继承父类外,也增加了自己的新方法,例如The heat pump is-like-an air conditioner。
当我们了解置换原则substitution principle的时候,我们知道纯继承是非常好的方式,但给子类增加自己的方法也是非常重要的。当我们设计的时候,要综合考虑这些方面。
利用多态实现可互换的对象 Interchangeable objects with polymorphism
后期绑定:C++使用virtual关键字,而java对动态绑定进行默认支持。
单继承 The singly rooted hierarchy
有利于垃圾回收;
有利于保证类的特定功能;
容器 Containers
C++ 中有标准C++ 库,Java中也有List, Maps, Sets等。
容器提供了不同的接口和外部行为;
不同的容器有不同的效率;
泛型 Parameterized types (generics)
保证 Downcast 开销和安全,采用泛型来规定其类型。
ArrayList<Shape> shapes = new ArrayList<Shape>();
对象创建和生命期 Object creation & lifetime
Java 使用动态内存分配
垃圾回收器,garbage collector
异常句柄:处理错误 Exception handling: dealing with errors
异常处理不是面向对象的特色,它比 object-oriented languages 出现的更早。
并发设计 Concurrent programming
Java 和 Internet
总结:oop 使我们对问题的描述更加直观。oop and java may not be for everyone.
分享到:
相关推荐
在IT领域,面向对象编程(Object-Oriented Programming,OOP)是一种广泛采用的软件开发范式,它基于“对象”这一核心概念。本章节深入探讨了对象、抽象数据类型(Abstract Data Types,ADTs)、信息隐藏...
1: Introduction to Objects 2: Making & Using Objects 3: The C in C++ 4: Data Abstraction 5: Hiding the Implementation 6: Initialization & Cleanup 7: Function Overloading & Default Arguments 8: ...
ChaptEr 1 an introduction to Programming 1 ChaptEr 2 Beginning the Problem-Solving Process 23 ChaptEr 3 Variables and Constants 51 ChaptEr 4 Completing the Problem-Solving Process 75 ChaptEr 5 The ...
Chapter 11, Introduction to Objects - 3 - Intermediate Perl Work with classes, method calls, inheritance, and overriding. Chapter 12, Objects with Data Add per-instance data, including ...
Introduction to Objects Object-relational features enhance the capabilities of the database: - **Object Types**: Defining object types to represent complex data structures. - **Object Tables**: ...
Introduction to Computer Science Using Python: A Computational Problem-Solving Focus introduces students to programming and computational problem-solving via a back-to-basics, step-by-step, objects-...
### Introduction to Python Programming Python is a high-level, interpreted programming language that is widely used for various applications, including web development, data analysis, artificial ...
3 edition (October 30, 2004) <br>Applying UML and Patterns is the world\'s #1 business and college introduction to \"thinking in objects\"and using that insight in real-world object-oriented ...
InfiniBand features Glossary Get familiar with IB HW/SW entities Get familiar with data path operations Get familiar with IB SW objects
A NEW INTRODUCTION TO MODAL LOGIC Preface ix Part One: Basic Modal Propositional Logic 1 The Basic Notions 3 The language of PC C) Interpretation D) Further operators F) Interpretation of A , D...
While most developers today use object-oriented languages, the full power of objects is available only to those with a deep understanding of the object paradigm. How to Use Objects will help you gain ...
ncRef.rebind(ncRef.to_name(name), hello); System.out.println("Server ready"); orb.run(); } } ``` ### 部署考虑 在实际应用中,部署分布式系统需要考虑以下几个方面: - **安全性**:确保远程对象访问...
Chapter 2 - Brief Introduction to Unity IDE Chapter 3 - Game Objects and Components Chapter 4 - Game Rules and Mechanics Chapter 5 - Creating the User Interface Chapter 6 - Creating Battleship Chapter...
Introduction to Visual Computing: Core Concepts in Computer Vision, Graphics, and Image Processing covers the fundamental concepts of visual computing. Whereas past books have treated these concepts ...
Introduction to Computer Science Using Python: A Computational Problem-Solving Focusintroduces students to programming and computational problem-solving via a back-to-basics, step-by-step, objects-...
第2章“Introduction to Objects”(面向对象导论)深入探讨了面向对象编程的概念,如类和对象的关系、接口和实现的分离、继承、多态和抽象类等。第3章“Hello, Objects”(你好,对象)介绍了对象的创建和引用,...
《对象的引入》(Introduction To Objects) 1.1 抽象的进步 所有编程语言都提供抽象机制,这使得我们能够解决复杂的问题。抽象的程度和质量直接影响到你能处理问题的能力。“种类”指的是“你在抽象什么?”汇编...