码迷,mamicode.com
首页 > 其他好文 > 详细

软考--面向对象

时间:2015-03-30 21:08:34      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:

背景

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

听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

核心

StringMathIntegerSystemThread,提供常用功能

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

*具体类名

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

dClass文件父文件在Classpath下。



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

软考--面向对象

标签:

原文地址:http://blog.csdn.net/mayfla/article/details/44755279

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!