Java面向对象编程概述
一、
01.软件开发经历周期:
- 软件分析:分析问题领域,了解客户的需求
- 软件设计:确定软件的总体结构,把整个软件系统划分为大大小小的多个子系统,设计每个子系统的具体结构
- 软件编码:用选定的编程语言来编写程序代码,实现在设计阶段勾画出来的软件蓝图
- 软件测试:测试软件是否能实现特定的功能,以及测试软件的运行性能
- 软件部署:为用户安装软件系统,帮助用户正确使用软件
- 软件维护:修复软件中已经存在的Bug,当用户需求发生变化时(增加新的功能,或者修改已有功能的实现方式),修改相应的软件部分
为了提高软件开发效率,降低软件开发成本,一个优良的软件系统应该具备以下特点:
- 可重用性
- 可扩展性
- 可维护性
02.Java语言的特点:面向对象、跨平台、直接支持分布式的网络应用、安全性和健壮性;简单性和高效性
03.可扩展性(Extensiblity)好
当软件必须增加新的功能时,能够在现有系统结构(系统由多个子系统构成,以及子系统由更多个更小的子系统组成的结构)的基础上,方便的创建新的子系统,这叫可扩展性好
二、结构化的软件开发方法简介

在进行结构化程序编程时,程序的主体是方法,方法是最小的功能模块,每个方法都是具有输入输出的子系统,方法的输入数据来自于方法参数,全局变量和常量,方法的输出数据包括方法返回值,以及指针类型的方法参数。一组相关的方法组合成打的功能模块。

#include<stdio.h> /**定义常量*/
#define circle 1
#define rectangle 2
#define line 3 /**画圆模块*/
void drawCircle(){...} //省略显示实现细节 /**画长方形模块*/
void drawRectangle(){...} //省略显示实现细节 /**画直线模块*/
void drawLine(){...} //省略显示实现细节 /**选择形状模块*/
void drawRectangle(){...}
int shape;
scanf("%d",&shape); //接收用户输入的形状
switch(shape){
case circle:
drawShape();
break;
case rectangle:
drawRectangle();
break;
case Line:
drawLine();
break;
default:
printf("输入的形状不存在!")
}
}
/**程序入口方法*/
void main(){
selectShape();
}
结构化开发弊端:
①自顶向下地按照功能来划分软件模块
②软件系统中最小的子系统是方法
2、面向对象软件开发方法简介
把软件系统看成各种对象的集合,对象就是最小的子系统,一组相关的对象能够组合成更复杂的子系统。
优点:
① 把软件系统看成是各种对象的集合,更接近人类的自然思维方式
② 系统结构稳定
③ 提高软件的可维护性、可重用性、可扩展性
三、对象模型
1、自底向上的抽象

2、自顶向下的分解

3、UML可视化建模语言

4、Rational Rose 可视化建模工具

四、面向对象开发中的核心思想和概念
问题领域、对象、属性、状态、行为、方法、实现
对象是对问题领域中事物的抽象。对象特征:
1.万物皆为对象
2.每个对象都是唯一的
3.对象具有属性和行为
4.对象具有状态
5.对象都属于某个类
五、类、类型
类是一组具有相同属性和行为的对象的抽象。类及类的关系构成了对象模型的主要内容
六、消息、服务
每个对象都具有特定的功能,相对于其他对象而言,它的功能就是为其他对象提供的服务。例如电视机具有的功能包括:开机、关机、选择频道、调节音量和播放VCD等。遥控器为了获得电视机的服务,需要向电视机提出获得特定服务的请求,提出请求的过程被称为发送消息

七、接口
在现实世界中,接口也是实体,比如电源插口、洗衣机上的按钮和电灯的开关。而在面向对象范畴中,接口是一个抽象的概念,是指系统对外提供的所有服务。
在Java语言中,接口有两种意思:
1、指系统对外提供的所有服务,在对象中表现为public类型的方法的声明
2、指用interface关键字定义的实实在在的接口,也称为接口类型。用于描述系统对外提供的所有服务,更加清晰地把系统的实现细节与接口分离
八、封装、透明
封装是指隐藏对象的属性和实现细节。
两个原则:
1、把尽可能多的东西藏起来,对外提供简捷的接口
2、把所有的属性藏起来
九、抽象
抽象是一种由具体到抽象、由复杂到简洁的思维方式。在面向对象的开发过程中,抽象体现在以下方面
1、从问题领域的事物到软件模型中对象的抽象
2、从对象到类的抽象
3、从子类到父类的抽象
十、继承、扩展、覆盖
在父类和子类之间同时存在着继承和扩展关系。子类继承了父类的属性和方法,同时,子类中还可以扩展出新的属性和方法,并且还可以覆盖父类中方法的实现方式。覆盖也是专业术语,是指在子类中重新实现父类中的方法。
注:
子类只能继承父类的部分属性和方法,父类中用private修饰的属性和方法对子类是透明的。
目前在Java领域比较流行的架构软件包括:
① J2EE
② Struts
③ JSF
④ Spring
十一、组合
组合是一种用多个简单子系统来组装出复杂系统的有效手段。个人计算机系统就是一个典型的组合系统。它由主机、键盘、鼠标、显示器、和外围设备打印机等组成。而主机由处理器、内存、一个或多个硬盘、显卡、网卡和声卡等组成。
十二、多态、动态绑定

十三、UML语言简介

十四、类之间的关系

十五、关联、依赖、聚集、泛化、实现
关联:指的是类之间的特定对应关系,在UML中用带实线的箭头表示
依赖:指的是类之间的调用关系
聚集:指的是整体与部分之间的关系
泛化:指的是类之间的继承关系
实现:指的是类与接口之间的关系
小结:

Java面向对象编程概述的更多相关文章
- java面向对象编程(类、对象)
一.面向对象编程概述面向对象编程(Object Oriented Programming,缩写为OOP)是当今最流行的程序设计技术,它具有代码易于维护.可扩展性好和代码可常用等优点.面向对象的设计 ...
- Java面向对象编程基础
一.Java面向对象编程基础 1.什么是对象?Object 什么都是对象! 只要是客观存在的具体事物,都是对象(汽车.小强.事件.任务.按钮.字体) 2.为什么需要面向对象? 面向对象能够像分析现实生 ...
- java 面向对象编程。。。。
经过一周的学习(java),总结了许多,对java的理解,java的类型,运用,安装,基础语法,变量,常量,表达式,语句 java从C语言中继承了大量语言特性.java面向对象编程的基本特征,包括继承 ...
- 《Java面向对象编程》
<Java面向对象编程> 第11章 对象的生命周期 11.1 创建对象的方式 用new语句创建对象 运用反射手段,调用java.lang.Class 或者 java.lang.Const ...
- JAVA面向对象编程课程设计——网络版单机斗地主
一.团队介绍 成员姓名 任务分配 成员课程设计博客链接 兰泽祥(组长) 数据库,斗地主规则的实现,人机自动出牌的算法,实体类的设计 JAVA面向对象编程课程设计--web版斗地主 吴修恩 JSP界面的 ...
- JAVA面向对象编程课程设计——web版斗地主
一.团队课程设计博客链接 JAVA面向对象编程课程设计--网络版单机斗地主 二.个人负责模块或任务说明 实体类的设计 斗地主规则的实现 人机自动出牌的算法 实现数据库的DAO模式 三.自己的代码提交记 ...
- java面向对象编程知识点总结
一:今天完成 上午详细了解了java面向对象编程的一些细节,记录如下. 1)类 是一种引用类型,包含一个签名和一个主体,主体是放在花括号里面的成员,成员包括字段和方法,还有构造方法.初始化程序和嵌套类 ...
- Java面向对象编程(一)
由于常常将Java和C++面向对象编程的原则搞乱,所以这次把相关要点分别总结一下,本文主要总结Java面向对象编程. 面向对象编程的三大特性是:继承性(inheritance), 多态性(polymo ...
- JAVA学习(五):Java面向对象编程基础
Java面向对象编程基础 面向对象(Object oriented programming,OOP)技术是一种强有力的软件开发方法,它採用数据抽象与信息隐藏技术,来使软件开发简单化,以达到代码重用的目 ...
随机推荐
- 遭遇Asp.Net长文件名下载的问题和解决办法
在Asp.Net中写了一个附件上传和下载的程序,附件上传到数据库中,然后将附件的GUID保存起来,我们可以根据GUID来找到数据库中的附件,一般附件下载的代码是: <!--<br /> ...
- hbase表结构设计
非常好的一个ppt HBase Schema design: http://www.slideshare.net/cloudera/5-h-base-schemahbasecon2012
- Sqli-labs less 23
第二部分/page-2 Advanced injection Less-23 Sql语句为$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1 ...
- delphi 中几种多线程操作方式
在了解多线程之前我们先了解一下进程和线程的关系 一个程序至少有一个主进程,一个进程至少有一个线程. 为了保证线程的安全性请大家看看下面介绍 Delphi多线程同步的一些处理方案大家可以参考:http: ...
- (转) C++ static、const和static const 以及它们的初始化
const定义的常量在超出其作用域之后其空间会被释放,而static定义的静态常量在函数执行后不会释放其存储空间. static表示的是静态的.类的静态成员函数.静态成员变量是和类相关的,而不是和类的 ...
- POJ 3662
Telephone Lines Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 4591 Accepted: 1693 D ...
- iOSpush过后返回多级界面
有导航控制器push过后pop可以反回上一个界面,然而我们需要返回多级界面有下面两种方法 调用API - (NSArray *)popToViewController:(UIViewControlle ...
- Activity学习(二)——生命周期
一.什么是Activity? 简单的说:Activity就是布满整个窗口或者悬浮于其他窗口上的交互界面.在一个应用程序中通常由多个Activity构成,都会在Manifest.xml中指定一个主的Ac ...
- URAL 1152. False Mirrors (记忆化搜索 状压DP)
题目链接 题意 : 每一颗子弹破坏了三个邻近的阳台.(第N个阳台是与第1个相邻)射击后后的生存的怪物都对主角造成伤害- 如此,直到所有的怪物被消灭,求怎样射击才能受到最少伤害. 思路 : 状压,数据不 ...
- 2014多校第五场1010 || HDU 4920 Matrix multiplication(矩阵乘法优化)
题目链接 题意 : 给你两个n*n的矩阵,然后两个相乘得出结果是多少. 思路 :一开始因为知道会超时所以没敢用最普通的方法做,所以一直在想要怎么处理,没想到鹏哥告诉我们后台数据是随机跑的,所以极端数据 ...