《疯狂Java讲义》学习笔记——第2章 理解面向对象
面向对象的三种基本特征:继承,封装,多态
UML(统一建模语言)
2.1 面向对象
2.1.1 结构化程序设计简介

图2.1 结构化软件的逻辑结构示意图
从图2.1可以看出,结构化设计需要采用自顶向下的设计方式,在设计阶段就需要考虑每个模块应该分解成哪些子模块,每个子模块又分解成哪些更小的模块……以此类推,直至将模块细化成一个个函数。
2.1.2 程序的三种基本结构
任何简单或者复杂的算法都可以由 顺序结构, 选择结构 ,循环结构 这三种基本结构组合而成。即基本结构。
2.1.3 面向对象程序设计简介
采用面向对象方式开发的软件系统,其最小的程序单元是类。这些类可以生成系统中的多个对象,而这些对象则直接映像成客观世界的各种事物。

图2.7 面向对象方式开发的软件系统逻辑上的组成结构
从图2.7可以看出,面向对象的软件系统由多个类组成,类代表了客观世界中具有某种特征的一类事物,这类事物往往有一些内部的状态数据,比如人有身高,体重,年龄,爱好等各种状态数据。类徽提供操作这些状态数据的方法,还会为这类事物的行为特征提供相应的实现,这种实现也是方法。因此,可以得到如下的基本等式
成员变量(状态数据) + 方法(行为) = 类定义
面向对象和面向过程相比粒度要大些,所以面向对象比面向过程更简单,易用。我们来举个例子来阐述他俩之间的关系:
假设需要组装一台电脑,面向对象提供的是主板、CPU、内存条、硬盘等这种大粒度的组件,而面向过程提供的是一些二极管,三极管,集成电路等小粒度的组件。
从思维方式上我们也举个例子来说明他俩的区别:
比如希望完成“猪八戒吃西瓜”这样一件事。
在面向过程的程序世界中,一切以函数为中心,函数最大,因此这件事情会用这样的语句表达: 吃(猪八戒,西瓜);
在面向对象的程序世界中,一切以对象为中心,对象最大,因此这件事情会用这样的语句表达: 猪八戒,吃(西瓜);
对比两条语句不难发现,面向对象的语句更接近自然语言的语法:主语,谓语,宾语一目了然,很直观。
2.1.4 面向对象的基本特征
面向对象有三个基本特征:封装、继承、多态。
封装:将对象的实现细节隐藏起来,然后通过一些公用方法来暴露该对象的功能;
继承:当子类继承父类后,子类作为一种特殊的父类,将直接获得父类的属性和方法;
多态:子类对象可以直接赋给父类变量,但运行时依然表现出子类的行为特征,这意味着同一个类型的对象在执行同一个方法时,可能表现出多种行为特征。
对象具有标识唯一性,而类是具有共同属性、共同方法的一类事物。类是对象的抽象,对象则是类的实例。
对象间的相互合作需要一个机制协助进行,这样的机制称为“消息”。消息是一个实例与另一个实例之间相互通信的机制。
2.2 UML(统一建模语言)介绍————此节是基础知识,完了会单独提出来
2.3 Java的面向对象特征
2.3.2 类和对象
Java语言使用class 关键字来定义类,定义类的时候可使用成员变量来描述该类对象的数据,可使用方法来描述该类对象的行为特征。即定义类的同时可确定该类共同特征的属性和行为。
《疯狂Java讲义》学习笔记——第2章 理解面向对象的更多相关文章
- 【疯狂Java讲义学习笔记】【流程控制与数组】
[学习笔记]1.switch语句后的expression表达式的数据类型只能是byte.short.char.int四个整数类型.String(Java 7后才支持)和枚举类型. 2.数组的长度不可变 ...
- 【疯狂Java讲义学习笔记】【数据类型与运算符】
[学习笔记]1.8bit = 1byte,4byte = 1word.Java中的整型数据有byte(1字节),short(2字节),int(4字节),long(8字节).Java中的浮点数据有flo ...
- java JDK8 学习笔记——第16章 整合数据库
第十六章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API中的接口会有数据库厂商操作,称为JDBC驱动程 ...
- 《疯狂java讲义》笔记 1-5章
1.编译语言和解释语言理解,摘自李刚老师的<疯狂Java讲义>第三版: 就是说,Java和.net都是编译型有事解释型语言.编译型就是根据不同平台编译成不同的可执行机器码,编译过程中会进行 ...
- 读《疯狂Java讲义》笔记总结一
最近在读<疯狂Java讲义>,现把其中遇到的一些自己以前没掌握的点儿记录下来. 1.字符串相关 字符串不是基本类型,字符串是一个类,也就是一个引用类型. 字符串转int类型String a ...
- [原创]java WEB学习笔记27:深入理解面向接口编程
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- 疯狂Android讲义 - 学习笔记(七)
第8章 Android数据存储与IO Java IO的数据存储可以移植到Android应用开发上来,Android系统还提供了一些专门的IO API. Android系统内置了SQLite数据库,S ...
- 疯狂Android讲义 - 学习笔记(五)
第五章 Android使用统一的Intent对象来封装“启动意图”,不管是启动Activity.Service组件.或者BroadcastReceiver等,提供了一致的编程模型.Intent设计有点 ...
- java JDK8 学习笔记——第17章 反射与类加载器
第十七章 反射与类加载器 17.1 运用反射 反射:.class文档反映了类基本信息,从Class等API取得类信息的方式称为反射. 17.1.1 Class与.class文档 1.java.lang ...
随机推荐
- 【原】通过JS打开IE新tab(非Window)的解决方案
近日项目里遇到限定在IE的tab窗口里打开新窗口的需求,结合网上的资源和亲自实践,总结以下比较可行的解决方案. 1.首先必须保证IE的设置正确.打开IE的Internet options ->G ...
- storm 集群配置
配置storm集群的过程中出现写问题,记录下来 1.storm是通过zookeeper管理的,先要安装zookeeper,从zk官网上下来,我这里下下来的的3.4.9,下载后移动到/usr/local ...
- 工作任务:模拟淘宝登录和购物车功能:使用cookie记录登录名,下次登录时能够记得上次的登录名,使用cookie模拟购物车功能,使用session记住登录信息并验证是否登录,防止利用url打开网站,并实现退出登录功能
登入界面<% Cookie[] cks =request.getCookies(); String str=null; for(Cookie ck:cks) { if(ck.getName(). ...
- ie6 z-index不起作用的解决方法
一.概念 z-index伴随着层的概念产生的.网页中,层的概念与photoshop或是flash中层的概念是一致的.熟悉photoshop或是flash的应该知道,层级越高(图层越靠上),越在上面显示 ...
- LINQ系列:Linq to Object排序操作符
LINQ排序操作符包括:OrderBy.OrderByDescending.ThenBy.ThenByDescending及Reverse. 1. OrderBy 1>. 原型定义 public ...
- 【转】WPF防止界面卡死并显示加载中效果
原文地址:http://www.cnblogs.com/linyijia/archive/2013/02/06/2900609.html <Window x:Class="Loadin ...
- .Net 转战 Android 4.4 日常笔记(2)--HelloWorld入门程序
我不知道人们为什么那么喜欢用HelloWorld来做为自己的第一个程序入门,为什么不是hello **其他的东西或者hi. 一.打开ADT 的Eclipse开发工具新建一个Android项目 New- ...
- Power BI官方视频(2) Power BI嵌入到应用中的3种方法
今天给大家介绍3种将Power BI嵌入到应用中的方法. 本文原文地址:Power BI官方视频(2) Power BI嵌入到应用中的3种方法 Power BI系列文章地址:微软Power BI技术文 ...
- 【开源】OSharp框架解说系列(2.2):EasyUI复杂布局及数据操作
OSharp是什么? OSharp是个快速开发框架,但不是一个大而全的包罗万象的框架,严格的说,OSharp中什么都没有实现.与其他大而全的框架最大的不同点,就是OSharp只做抽象封装,不做实现.依 ...
- 《ASP.NET MVC 5框架揭秘》样章发布
今天算是新作<ASP.NET MVC 5框架揭秘>正式上架销售的日子(目前本书在互动网已经到货),为了让更多适合的朋友们能够阅读此书,同时也避免让不适合的读者误买此书,特将此书的样章发布出 ...