软考--面向对象

背景

今年开始软考的时间有点晚了,从报了名之后软考算是正式开始了,放下了其他的东西,全面开始软考(中级)模式。

听Mr.mi和考过的人说,软考就是对过去几年学习的总结和复习,它是一个分水岭,过了这一关,那么今后的学习会有不一样的感受。

面向对象思想在刚开始学习VB6.0时候就接触过,只是它并不完全是面向对象程序语言,后来接触的C++、C#、设计模式等知识的时候才有一个大概的了解。软考里面设计模式使用的语言是java语言,以前没有接触过,但是它的基础知识和C和vb很像。所以之后有些知识点是在java语言基础上的。(J2SE)

概况

处有一个面向对象的导图

发展史

面向过程:

以方法进行编程。完成功能都是以一个一个步骤拼接起来的。

面向对象:

比面向过程更加抽象,和复用性更好。它以一个对象为基本进行调用

1、对象、类

2、方法、属性

3、关系

面向组件

这是比对象更加的抽象(二进制级别)

面向服务

其实和面向组件一样,它们还是利用面向对象的思想,只不过对对象进行了更深层次的抽象。

Java和面向对象

java中也是类和对象为单位,声明类,然后供其它的类调用。类和类之间的关系分为4种,分别是关联关系、继承关系、聚合/组合关系、实现关系。


关联关系


关系最弱,比如调用:一个类的方法,参数是另一个类的对象名


继承关系


可以读为XX是一种XX,比如小猫是一种动物。


整体和部分关系


有组合和聚合两种关系,前者是紧耦合关系,后者是松耦合关系


实现关系


接口和实现接口的类的关系

使用面向对象

我们有面向对象的思想,就是为了在软件设计中应用这个思想,为我们节省时间、减少麻烦,使软件复用性强。

Public class TestStack{
  Publc static void main(String[] args){<span style="font-family: Arial, Helvetica, sans-serif;">    </span>
    Test test =new Test();
    int date 9;
    BirthDate d1=new BirthDate(1,1,2000);
    BirthDate d2=new BirthDate(7,7,1970);

    test.change1(date);
    test.change2(d1);
    test.change3(d2);<p style="margin:0in;font-family:SimSun;font-size:10.5pt" lang="en-US">     System.out.println("date="+date);</p><p style="margin:0in;font-family:SimSun;font-size:10.5pt" lang="en-US">     d1.display();</p><p style="margin:0in;font-family:SimSun;font-size:10.5pt" lang="en-US">     d2.display();</p>
  }

  Public void change1(int i){
    i=1234;
  }
  Public void change2(BirthDate b){
    b=new BirthDate(22,3,2015);
  }

  Public void change3(BirthDate b){
    b.setday(22);
  }
}

代码执行前在内存的状态:

执行后在内存中的状态:

在这个过程中,栈中产生过变量i、b;堆产生过b所指向的对象。

方法调用完毕以后,为这个方法分配的局部变量自动消失;

方法也会消失。这个方法指向的内存中的对象如果没有指针指向就会消失(垃圾回收)

对象中的方法使用:

在学习使用方法有几个特殊的关键字要学习,this关键字,super(),Static关键字,package中的jar包和关键字import。final关键字等。

1、this关键字

通过自身引用,this可以处理成员变量和参数重名的问题;和this
相对的有一个super方法:它指父类。

			public class DemoThis{   
			private String name;   
			private int age;   
			DemoThis(String name,int age){    
			setName(name);   
			//你可以加上this来调用方法,像这样:this.setName(name);但这并不是必须的    
			setAge(age);    
			this.print(); br> }     
			public void setName(String name){    
			this.name=name;//此处必须指明你要引用成员变量   
			}   
			public void etAge(int age){    
			this.age=age;   
			}   
			public void print(){    
			System.out.println("Name="+name+" ge="+age);  
			//在此行中并不需要用this,因为没有会导致混淆的东西   
			}   
			public static void main(String[] args){    
			DemoThis dt=new DemoThis("Kevin","22");  
			这段代码很简单,不用解释你也应该能看明白。在构造函数中你看到用this.print(),你完全可以用print()来代替它,两者效果一样。下面我们修改这个程序,来演示super的用法。  
			class Person{   
			public int c;   
			private String name;   
			private int age;   
			protected void setName(String name){    
			this.name=name;   
			}   
			protected void setAge(int age){    
			this.age=age;  
			}   
			protected void print(){    
			System.out.println("Name="+name+" Age="+age);   
			}  
			}  
			public class DemoSuper extends Person{   
			public void print(){    
			System.out.println("DemoSuper:");    
			super.print();   
			}   
			public static void main(String[] args){    
			DemoSuper ds=new DemoSuper();    
			ds.setName("kevin");    
			ds.setAge(22);    
			ds.print();   
			}  
			}  

2、static关键字

static声明的是静态成员变量,它在内存中被分配到data segment区中,在调用该方法时,不会将对象的引用传递给它,所以在static方法中不可访问非static的成员。

3、package和import

现在即使有类的一些命名规则,但是仍然会出现类名冲突的情况,使用包就可以解决这个问题。在安装文件加下jre/lib下有很多.jar文件,其中rt.jar中打包类很多我们需要用到的类。

以下是我们主要会用到的类:


Java.lang


核心


String、Math、Integer、System、Thread,提供常用功能


Java.awt


包含构成抽象窗口工具集的多个类,这些类被用来构建和管理应用程序的图形用户界面


Java.applet


不流行


小应用程序


Java.net


与网络相关的操作的类


Java.io


输入、输出功能的类


Java.util


包含一些实用工具,如定义系统特性、实用与日期日历相关的函数

如果引用包里的文件,可以使用import

上面这种麻烦而且容易写错。

使用import java.io.*;//*号代表引用全部

总的来说:

a、将类放到包里,就要在源文件第一行加package

b、必须保证该类的class
文件位于正确目录下

该类的源码可能会产生影响,可以删除或移动

c、其他类访问jar包中的类

写全名:com.tgb.426.Xulingbo

引入import:

*具体类名

访问位于同一包中的类不需要引入。

d、Class文件父文件在Classpath下。

总结:这只是面向对象思想的一些特别基础的东西,熟练使用在以后的设计模式和程序设计会有很多的帮助。在面向对象的程序设计中,构造方法是我经常会混淆的概念,在接下来的学习过程中,深入体会吧!

时间: 2024-08-25 05:02:34

软考--面向对象的相关文章

软考倒计时27天:信息系统集成专业技术知识

2014-04-27 14:09:38      多云          距软考还有27天!当一个人先从自己的内心开始奋斗,他就是个有价值的人. 1.信息系统集成的显著特点: 2.信息系统集成的分类 3.信息系统的生命周期: 4.信息系统的开发方法有哪些,各自的特点 5.软件需求的一个基本特征是:() 6.需求分析的目的 7.如何理解"高内聚,低耦合" 8.判断:软件测试是一种仅在编码阶段完成后才开始的活动. 9.软件测试在概念上区分为哪三类: 10.            软件维护的

软考之路(三)---组成原理

计算机的基本硬件系统由运算器.控制器.存储器.输入设备.输出设备5大部件组成.计算机组成原理是计算机的底层内容的学习,了解学习它,对今后解决这个问题从根本上非常轻松的理解,然而在学习这块地内容时遇到了非常多关于进制的计算.系统来回处理数据的分析,都是相当不错的.非常有意思.主要是计算的语言里面仅仅有0.1,勾勒出了这么色彩缤纷的世界,真的是太奇妙啦,让我们通过学习这些基础内容来从还有一个角度来认识计算机.同一时候思考人类的智慧的结晶多么的不可深測,算法的巧妙,虽然引入了非常多的内容都是在为了更好

软考中级笔记

9大管理总复习 5大过程组 范围管理 1)      范围管理的过程和各自的工具是什么? 2)     产品范围包含(产品规格),( 性能技术指标)的描述. 3)     项目范围是否完成以什么为衡量标准. 以项目管理计划,项目范围说明书,WBS,以及WBS字典作为衡量标准. 要基于项目管理计划来度量 4)     WBS的表示形式是什么?各有什么优缺点? 树型和列表形式. 优点 缺点 树型 层次清晰,非常直观,结构性强 不容易修改,对于大的复杂的项目很难表示出项目的全景.一般应用在中小型项目中

软考(一)整体总结

软考备考已经有一个多月的时间了,看完希赛视频之后,又看了两边软考书.软考涉及到的知识面很广,但是大部分都是曾经学习过的知识,刚开始看书的时候感觉知识很多,很凌乱,经过一番疏通,将知识分类,瞬间清晰了不少,见下图: . 导图思路: 整体上,我把软考的知识块划分为三类,分别是计算机,软件工程和其他信息安全和规范化相关知识三个部分,我们的考试叫做全国计算机技术与软件专业技术资格(水平)考试,所以不难理解整体上被分为这三个部分了,先对计算机的有了详细的认识,然后利用软件工程的思想开发制作软件,当然,在开

考试备战系列--软考--02基础知识复习

这部分主要是计算机基础知识的概念介绍,相关系列文章如下所示. 考试备战系列--软考--01基础架构概念 考试备战系列--软考--02基础知识复习 考试备战系列--软考--03综合知识复习 考试备战系列--软考--04考题收集 考试备战系列--软考--05案例收集 考试备战系列--软考--06论文准备 操作系统时计算机系统的核心系统软件,其他软件均建立在其上,其分类包括:单用户操作系统和批处理操作系统.分时操作系统和实时操作系统.网络操作系统和分布式操作系统.嵌入式操作系统.其4大特征为并发性.共

【软考路上】——总结篇——软考收获+复习建议

无论你现在正在学习什么知识,不要认为它不重要,因为在你今后的某个时刻一定会用上. 这句话,软考给了我很明确的验证.软考复习过程中,很多知识点都是在自考和自己的专业课中学习过的的.软考中的考点大致如下: 还记得琛琛在动员大会上为大家做的考点分析,分析到最后,原来这些知识点大部分都是我们学过的啊~~ 从考试的角度来说,结合自己经历的分享一点小建议: 1.J2SE学习:有人说软考阶段,J2SE学习不重要,如果这么想的话那就大错特错了,学习J2SE并不仅仅是学习java中那几个关键字,更主要的是更深.更

软考程序员新手易错笔记

1.●标准化对象一般可分为两大类:一类是标准化的具体对象,即需要制定标准的具体事物:另一类是  (4)  ,即各种具体对象的总和所构成的整体,通过它可以研究各种具体对象的共同属性.本质和普遍规律. (4) A.标准化抽象对象    B.标准化总体对象    C.标准化虚拟对象    D.标准化面向对象 [解析]:标准化对象一般可分为两类:一类是标准化的具体对象:另一类是标准化的总体对象. 2.●用二进制加法器对二-十进制编码的十进制数求和,当和大于1010时,  (5)  . (5) A.不需要

18--(软考)信息系统管理师--知识点(2)-OneStar

★一星级知识点★ 1.81.   总价合同的适用条件是什么? 总价合同适用于工程量不太大且能精确计算.工期较短.技术不复杂.风险不大的项目,同时发包人必须准备详细全面的设计图纸和各项说明,是承包人能准确计算工程量. 82.   针对合同不明确情况,即合同法第62条,如何处理? <合同法>第61条明确规定,对于合同不明确的情况,应对先协商,达成补充协议.达不成补充协议的,依照合同其他条款或交易习惯确定.如果依此还不能明确有关条款的含义,那就要用<合同法>第62条来解决. 1)当事人对

软考——J2SE

我们先从Java说起,简单的说,Java是一种面向对象的程序设计语言,可跨平台使用. 与之前学习的程序设计语言相比,最值得一提的就是Java的两种核心机制:Java虚拟机和垃圾回收机制. 1)虚拟机 "一次编译,随处运行": Java虚拟机是可运行Java代码的假想计算机,它是一个想象中的机器,在实际的计算机上通过软件模拟来实现. 不同的运行平台,有不同的虚拟机.     2)垃圾回收 在C和C++中,由程序员负责回收不用的内存.而在Java中不再给予程序员这个任务,交由垃圾回收机制负