Java(二)--OOP设计思想

(一)java中的oop思想的由来

机器语言-直接有计算机的指令组成,指令、数据、地址都已“0”和“1”组成:可以被计算机直接执行。

汇编语言-用容易理解和记忆的符号表示指令、数据以及寄存器等,抽象层次低,程序员需要考虑大量的机器细节。

高级语言-接军人类的自然语言,提出了结构化数据和语句,为面向数据和过程抽象的。

面向对象-抽象成了现实的事物。

(二)OOP的设计思想

从上图中我们可以看到:OOP的设计思想是:有哪些类?这些类有哪些方法?这些类有哪些属性?类和类之间有什么关系?

1、类

Java本身底层文件中给我们提供的类,有核心类,就是我们经常用的;有网络的类可以通过TCP和UDP协议实现通话;有IO类,就是数据流实现对文件的读写等;工具类,有窗体工具,可以生成Java的窗体和组件等,有使用工具,有容器等。要想使用这些类,要引用,因为Java中除了8大基本数据类型不需要引用只为,其他的对象使用的时候,都需要先引用。

2、方法(动态属性)

Java中有所有我们需要的Java类及其方法,一名优秀的程序员,要学会用这个api文件。当然视频中马士兵老师用构造方法讲解了方法,从特殊到一般,构造方法与类同名,一个类中可以有很多个构造方法,方法的区别在于:参数的个数;参数的类型不同。构造函数在实例化的时候被调用的。

内存分析:

我们主要分析的是第三步:执行过程中的,

(1)、heap为栈,new 出来的东西,都放在这里、返回值暂时性的放在这里、局部变量名称放在这里等;

(2)、Stack为堆,局部变量的值放在这里,new出来的形参放在这里等。

当所在函数执行结束,所有的数据就会被释放。

(3)、Data Segment 是存放静态变量的,就是用static声明的变量,不需要对实例化,就可以直接类名+变量名就可以访问到的。

(4)、code segment 存放代码的。

(5)、this的内存分析

3、属性(静态属性)

这里注意一下static声明的属性就可以了。

4、类之间的关系

这些关系,我们在UML中就讨论过了的,在设计模式中主要要注意必须会这些关系在代码中是怎样实现的。

5、原则

这里在继承中有两个区别:

(1)、接口和抽象类的区别:继承接口的,要实现接口中的所有方法,二继承抽象类的,不用实现所有方法;一个类可以实现继承多个接口,但只能继承一个抽象类。

(2)、重载和重写:很简单:

重载就是在类中可以创建多个方法,他们具有不同的参数表(参数类型和个数),但名字相同,是一种类的多态性的表现。

重写:是父类和子类之间的多态性,子类继承父类中的方法,而不需要从新编写,简单地说是覆盖,子类与父类有相同的方法名、返回类型、参数表。

注意一下就行了。

(三)总结

个人觉得马士兵老师讲的OOP改变了很多以前自以为是的想法,老师说的那句话:你们所做的new出对象,对象.方法,调出来后就用,是完完全全面向过程的思想,而大师级的程序员是考虑有哪些类,这些类中有哪些方法,有哪些属性,类与类之间有什么关系,这才是面向对象的思想。

时间: 2024-11-10 01:38:53

Java(二)--OOP设计思想的相关文章

基于 CSP 的设计思想和 OOP 设计思想的异同

LinkerLin Go语言推崇的CSP编程模型和设计思想,并没有引起很多Go开发者包括Go标准库作者的重视.标准库的很多设计保留了很浓的OOP的味道.本篇Blog想比较下从设计的角度看,CSP和OOP到底有什么区别. 下面,我们来看一个例子,如果我们有一个项目,需要做一个TCP连接中继器(请原谅我的用词).我们先按照OOP来设计下: 系统的结构:需要有一个客户端和一个服务器端.分两个进程分别跑在不同机器上. 系统对象关系拆分(这里有所简化,E-R图等省略):连接中继器类--系统的主类.conf

mongodb的java客户端的设计思想

链接见http://api.mongodb.org/java/current/?_ga=1.111551751.200271495.1409034486 整体结构分为 com.mongodb是核心类.其中包含接口.实现类.枚举类型.异常类.见http://api.mongodb.org/java/current/com/mongodb/package-frame.html 实现类的重要性比异常类要高.实现类的方法必须要尽量都要理解,可能一个功能就卡在某个实现类的某个方法,这个事致命的. 看看怎么

Java之------单机版书店管理系统(设计思想和设计模式系列六)销售模块

书店管理系统 书店管理系统可以说是设计模式及设计思想的一个比较经典的例子. 本系列将分为多个部分讲述此输电管理系统. 书店管理系统将分为:用户.图书.进货.销售和库存五个模块,另外还有公共包.工具包和登录包,另外还有一个框架. 对于分层设计,都是表现层可以调用逻辑层,逻辑层调用数据层,数据层调用工具和公共包,方向不可打乱,必须严格按照这种模式. 本篇将做销售模块. 注:本篇需要使用到的框架在本系列二的用户模块: 链接:http://blog.csdn.net/x121850182/article

Java多个数相加源代码流程图设计思想

一.设计思想: 1.理解题目要求,即  编写程序完成多个数字相加并输出结果,题目中的难点就是命令行的参数为字符串,需要经过转化变为数字后进行计算,通过查询互联网得到解决问题方法,用“*.nextInt()”函数即可解决此问题. 2.设计程序的结构,先申请动态空间,完成可输入多个数字的要求. 最后通过输入.计算.输出完成程序. 二.程序流程图 三.源代码 package sum; import java.util.Scanner; public class Text { public static

java之 ------ 设计思想

java的设计思想 (设计思想.是须要不断领悟的.. . ) 一.封装 学java的人都知道这是向对象的编程语言,从字面上理解,就是针对对象的一些操作,将具有某一特性的实体封装成一个类或者是将具有一定功能的方法,抽取出来封装成一个供外面调用的方法,然后通过new这个类或方法生成对象,最后通 过对对象进行操作或者实现对应的功能. 如将一个人封装成一个人的类.人有属性:性别,年龄,出生日期.家庭住址等,外界对人进行操作时.仅仅能改变其属性值.可是不能改变属性的种类,这要更安全.并且当对人进行操作时.

Java设计思想(1)

前言:接下来学习的是java中非常重要的东西,也是非常抽象的东西,有种只可意会不可言传的感觉,不过没那么神秘咯,要相信代码功底好,这些都不在话下塞.不过设计思想需要的是不断的学习,不断的领悟,才能更好的体会设计思想. 一.组件 下面通过一个图片抽象的了解下: 这是一种"组件"封装体设计思想,图中的组件(1~k)很显然是组件,还有模块(1~m),子系统(1~n)也是可以看成是组件,而且系统也可能是组件,如果一个很大的软件,那么这部分系统只是项目的一角. 二.Java程序设计的基本原则1

39.JAVA编程思想之外篇——JAVA图形化设计精简大全一文覆盖

39.JAVA编程思想之外篇--JAVA图形化设计精简大全一文覆盖 欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/51204948 目录 Java图形化界面设计--容器(JFrame)...1 Java基本类(JFC)...1 l     AWTAbstract Window Toolkit(AWT)抽象窗口工具包... 2 l     Swing包... 2 l     AWT和Swing的区别... 6 Swing基本框

kafka入门二:Kafka的设计思想、理念

本节主要从整体角度介绍Kafka的设计思想,其中的每个理念都可以深入研究,以后我可能会发专题文章做深入介绍,在这里只做较概括的描述以便大家更好的理解Kafka的独特之处.本节主要涉及到如下主要内容: Kafka设计基本思想 Kafka中的数据压缩 Kafka消息转运过程中的可靠性 Kafka集群镜像复制 Kafka 备份机制 一.kafka由来 由于对JMS日常管理的过度开支和传统JMS可扩展性方面的局限,LinkedIn(www.linkedin.com)开发了Kafka以满足他们对实时数据流

模仿JavaAppArguments.java示例,编写一个程序,此程序从命令行接收多个数 字,求和之后输出结果,写出其的设计思想、程序流程图、源程序代码。

一 设计思想 首先现在file中建立一个类,并把任务名和类名写上(注意类名的大写):第二步则是参数的输入,并且定义求和变量:第三步则是对参数数据类型的要求,要把字符类型转化为整数类型并输出(这也是本道题的重点所在),当然这步要放在输入参数的for循环中:最后就是求和并输出参数的和. 二 程序流程图 三 源程序代码 public class JavaAppArguments { /** * @param args */ public static void main(String[] args)