`
xiaowife20
  • 浏览: 990 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

面向对象该这样理解

阅读更多
很多人学了面向对象语言学了很久却没有领会到什么是面向对象,也正是因为这样,很多时候我们写代码时感觉无从下手,什么是面向对象。举个例子:贪食蛇的游戏大家玩过吧。蛇是一个对象,食物是一个对象。蛇的类中有什么呢,属性和方法,属性有蛇的坐标,蛇的长度,方法有上下左右移动。食物有什么属性和方法呢,属性是坐标,方法是出现在随机背景中的某个位置。这就是面向对象的最基本的理解。  再举一个例子,一个接口,interface Animal;里面有一个方法move();类rabbit实现了这个接口,类tiger实现了这个接口。兔子中有一个属性:素食,兔子中的move(){跳跳跳} 老虎中有一个属性:肉食,老虎中的move{跑跑跑} 。 从这里我们可以看到类其实就是属性和其行为的封包,接口就是一个种行为的规范。 类中我们要特别注意的一点就是:各司其职,不要去含有不该含有的属性,不要去实现你不该有的方法,这是特别重要的一点。面向对象中除上述的以外还有一个特别重要的东西就是面向接口编程。下面有一个比较经典的例子。USB接口上可以插U盘,也可以插鼠标,我们来模拟他,并分析什么是面向对象。首先我们分析U盘是个类对吧,里面该有点自己的属性吧,还有自己的行为吧,鼠标是个类吧,也该有自己的方法和行为吧。USB接口是个接口,当你写程序不知道怎么下手的时候,这些先可以写上吧。然后是USB接口,他仅仅是一个接口,只要实现了这个标准的东西就可以插上去使用。所以USB弄成一个接口,行为是doSomething();Ok,开始写代码
interface USB{
    void doSomething();            //USB接口的行为,做点儿事
}
class UDisk implements USB{
    private String action1="装东西";        
    private String action2="传东西";            //U盘的特征
    @Override
    public void doSomething() {
        System.out.println(action1+" "+action2);   //U盘做事
    }
}
class Mouse implements USB{
    private String action1="拖动";              //鼠标的特征
    private String action2="点击";
    @Override
    public void doSomething() {
      System.out.println(action1+" "+action2);    //鼠标做事
    }
}
class  PeopleAction{
    public static USB insertUDisk(){
        return new UDisk();                   //人插入优盘
    }
    public static Mouse insertMouse(){
        return new Mouse();
    }
}
class Test{
    public static void main(String[] args) {
       USB usb=PeopleAction.insertUDisk();    //插入U盘,获得一个U盘的实例,父类引用指向子类对象,我们不用关心U盘中的具体实现,
       usb.doSomething();                                //只要插上去用,也就是插上去过后dosomething
       usb=PeopleAction.insertMouse();           //插入鼠标,获得一个鼠标实例,父类引用指向子类对象,我们也不必关心鼠标的具体实现
       usb.doSomething();                                //插上去就用
    }
}
从这个例子中我们也可以看出什么是面向对象,也就是属性和其行为的封包,接口对具体实现的解耦。假如我们不用接口,那么我们总是要这么写 UDisk disk=new UDisk();  Mouse mouse=new mouse();我们在Test中总是要想到要把U盘弄出来,鼠标new出来,显得不直观。而用了接口过后,从我们peopleAction那个类中我们可以看到插入是我们的一个行为。我们之所以写这个类是为了不让new UDisk和new Mouse暴露给别人,插入显得更加地直观,这是是简单的工厂模式。插入U盘用U盘,插入鼠标用鼠标。当然,更好的也可以用ioc来做,比如说我们几个人做一个项目,你写的是UDisk那块,如果你写成new UDisk,意味着你把UDisk的实现给了其他人,假如你UDisk里面的东西需要改动,你还要去找他们商量,如果次数少还可以,搞到几次估计很难和别人相处。我们要做的是把接口给他,把USB给他,然后用依赖注入的方式注入给USB的引用。直接通过引用调用插上去的实体的方法,这也是目前Spring框架中用到的,一种很重要的思想。
    千言万语汇成一句话:  面向对象的核心就在于其属性和其行为的封包,接口对于具体实现地解耦。
转载请注明出处
0
5
分享到:
评论

相关推荐

    转载面向对象的理解

    ### 面向对象的理解 #### 一、面向过程与面向对象的概念对比 在软件开发领域,编程范式是组织代码的方式,常见的编程范式包括面向过程编程(Procedural Programming)和面向对象编程(Object-Oriented Programming...

    java面向对象理解

    "java面向对象理解" Java 面向对象编程是 Java 语言的核心概念之一。它是一种编程范式,旨在通过封装、继承和多态等机制来模拟现实世界中的对象交互。 面向对象的方式通过向程序员提供表示问题空间中的元素的工具...

    深入理解面向对象

    在从面向过程编程转向面向对象编程的过程中,我们需要理解几个核心概念:类、对象、封装、继承、多态。下面将详细阐述这些概念以及它们在实际编程中的应用。 1. 类与对象 类是面向对象编程的基础,它是创建对象的...

    js面向对象简单理解

    JavaScript是一种广泛应用于Web开发的动态编程语言,尤其以其强大的面向对象特性而闻名。面向对象编程(Object-Oriented ...通过阅读`prototype.js`这样的示例代码,可以帮助加深对JavaScript面向对象编程的理解。

    程序员8年对于c++ 面向对象的理解

    【C++面向对象的理解】 C++是一门强大的编程语言,尤其以其面向对象特性著称。面向对象编程(Object-Oriented Programming, OOP)是一种设计理念,它基于对象、类、继承、封装、多态等核心概念。8年的编程经验使得...

    面向对象实验通过编程和上机实验理解 Java 语言是如何体现面向对象

    首先,要体现面向对象思想,关键在于理解和应用类与对象。类是具有相同属性和行为的一组对象的抽象,它定义了对象的状态(成员变量)和行为(成员方法)。在Java中,我们使用`class`关键字来声明一个类。例如,`...

    面向对象 面向对象 面向对象

    面向对象编程(Object-Oriented Programming,简称OOP)是一种重要的编程范式,它基于“对象”的概念,通过封装、继承和多态等核心特性,实现了...理解并熟练运用面向对象的思想和技巧,是每个程序员进阶的必经之路。

    深刻理解对象设计及面向对象设计

    职责设计是面向对象设计的关键,它的目标是确保每个对象都有清晰、独立的职责,这样可以提高系统的可读性、可维护性和可扩展性。在实践中,我们可以通过识别问题域中的实体和它们的行为,将行为分配给相应的对象,...

    面向对象概要设计模板

    在软件设计中,面向对象设计方法可以帮助开发者更好地理解系统的需求和行为,从而提高软件系统的质量和可维护性。 在面向对象设计中,有两个核心概念:类和对象。类是对对象的抽象描述,而对象是类的实例。类定义了...

    Python 3面向对象编程

    Python 是一种面向对象的解释型语言,面向对象是其非常重要的特性。《Python 3面向对象编程》通过Python 的数据结构、语法、设计...如果你拥有其他面向对象语言的经验,你会更容易理解《Python 3面向对象编程》的内容。

    深入理解PHP 高级技巧、面向对象与核心技术(原书第3版)源码

    《深入理解PHP 高级技巧、面向对象与核心技术(原书第3版)》是一本专为PHP开发者设计的深入学习书籍,旨在帮助读者掌握PHP的高级特性、面向对象编程以及核心概念。源码文件“phpvqp3_scripts”包含了本书中所讲解的...

    面向对象需求规格说明书

    该文档中的术语和缩写解释是为了确保读者能够正确地理解该文档的内容。 2. 任务概述 该软件系统的开发旨在提供一种新的解决方案,以满足用户的需求。该软件系统的开发是基于面向对象的方法,旨在提高软件系统的...

    实用面向对象软件工程教程

    在面向对象分析阶段,我们首先理解问题域,识别出关键实体和它们之间的关系,这通常通过创建类图、用例图和活动图来实现。类图描述了系统中的类及其相互关系,包括继承、关联和聚合等。用例图则展示了系统与用户之间...

    网页开发面向对象思想深入理解

    网页开发面向对象思想深入理解的知识点涵盖了JavaScript编程语言的面向对象特性、数据类型、以及编程哲学。以下是对标题、描述、标签和部分内容中提及的知识点的详细阐述。 1. 面向对象思想在网页开发中的重要性 ...

    面向对象经典讲解 有助于更进一步理解java对象

    面向对象编程是软件开发中的一种核心思想,尤其在Java这样的面向对象语言中至关重要。它与传统的面向过程编程有着显著的区别。面向对象编程(OOP)强调的是数据和操作这些数据的函数(方法)的组合,即对象。在这个...

    软件工程面向对象分析实验报告

    实验的目的在于让学生理解和掌握面向对象设计的基本原则,例如封装、继承和多态,并能运用这些原则进行具体的设计。问题域子系统、人-机交互子系统、任务管理子系统和数据库管理子系统是系统逻辑架构的常见组成部分...

    第16章 LabVIEW中的面向对象编程,labview面向对象的框架,LabView

    在LabVIEW中实现面向对象编程(Object-Oriented Programming, OOP)可以提升代码的可重用性、可维护性和组织性。本章将深入探讨LabVIEW中的面向对象编程框架及其应用。 面向对象编程的核心概念包括类(Class)、...

    面向对象分析与设计.pdf

    由于提供的文件内容不包含实际的文本信息,而是重复的URL链接,因此无法从该部分提供有关面向对象分析与设计(OOAD)的知识点。但是,我将尽可能详细地介绍面向对象分析与设计的相关知识点,以满足您的需求。 面向...

    面向对象技术-1

    - **认知规律**:在面向对象方法学中,认知规律是指通过观察、理解和模拟现实世界中的实体来构建软件系统的规律。这种方法更易于理解和管理复杂系统。 #### 面向对象技术的分析方法及语言 - **面向对象分析与设计*...

Global site tag (gtag.js) - Google Analytics