Java语言深入

在一个面向对象的系统中,系统的各种功能是由许许多多的不同对象协作完成的。在这种情况下,各个对象内部是如何实现自己的对系统设计人员来讲就不那么重要了;而各个对象之间的协作关系则成为系统设计的关键。小到不同类之间的通信,大到各模块之间的交互,在系统设计之初都是要着重考虑的,这也是系统设计的主要工作内容。面向接口编程我想就是指按照这种思想来编程吧!实际上,在日常工作中,你已经按照接口编程了,只不过如果你没有这方面的意识,那么你只是在被动的实现这一思想;表现在频繁的抱怨别人改的代码影响了你(接口没有设计到),表现在某个模块的改动引起其他模块的大规模调整(模块接口没有很好的设计)等等。

Booch先生那天谈到Interaction Designer,它就是指做这类设计的人,只不过层次更高一些。我想目前我们的软件设计队伍中,这类人是最缺乏的人才之一。

非接口编程?是不是就是面向过程的编程思想?

1.关于接口的理解。

接口从更深层次的理解,应是定义(规范,约束)与实现(名实分离的原则)的分离。

我们在一般实现一个系统的时候,通常是将定义与实现合为一体,不加分离的,我认为最为理解的系统设计规范应是所有的定义与实现分离,尽管这可能对系统中的某些情况有点繁烦。

接口的本身反映了系统设计人员对系统的抽象理解。

接口应有两类:第一类是对一个体的抽象,它可对应为一个抽象体(abstract class);

第二类是对一个体某一方面的抽象,即形成一个抽象面(interface);

一个体有可能有多个抽象面。

抽象体与抽象面是有区别的。

2.设计接口的另一个不可忽视的因素是接口所处的环境(context,environment),系统论的观点:环境是系统要素所处的空间与外部影响因素的总和。任何接口都是在一定的环境中产生的。因此环境的定义及环境的变化对接口的影响是不容忽视的,脱离原先的环境,所有的接口将失去原有的意义。

3.按照组件的开发模型(3C),它们三者相辅相成,各司一面,浑然一体,缺一不可。

面向对象是指,我们考虑问题时,以对象为单位,考虑它的属性及方法

面向过程是指,我们考虑问题时,以一个具体的流程(事务过程)为单位,考虑它的实现

接口设计与非接口设计是针对复用技术而言的,与面向对象(过程)不是一个问题

我认为:UML里面所说的interface是协议的另一种说法。并不是指com的interface,CORBA的interface,Java的interface,Delphi的interface,人机界面的interface或NIC的interface。

在具体实现中,是可以把UML的interface实现为语言的interface,分布式对象环境的interface或其它什么interface,但就理解UML的interface而言,指的是系统每部分的实现和实现之间,通过interface所确定的协议来共同工作。

所以我认为,面向interface编程,原意是指面向抽象协议编程,实现者在实现时要严格按协议来办。也就是Bill Joy同志说的,一边翻rfc,一边写代码的意思。面向对象编程是指面向抽象和具象。抽象和具象是矛盾的统一体,不可能只有抽象没有具象。一般懂得抽象的人都明白这个道理。 但有的人只知具象却不知抽象为何物。

所以只有interface没有实现,或只有实现而没有interface者是没有用的,反OO的。

所以还是老老实实面向对象编程,面向协议编程,或者什么都不面向,老老实实编程。

但是我很讨厌讨论这样的术语,不如我们谈谈什么叫面向领导的编程?面向用户的编程?领导和用户有时都很BT,我们就面向BT编程?

时间: 2024-09-19 09:30:12

Java语言深入的相关文章

利用JAVA语言实现支持视频点播的WEB服务器

一.项目简介: JAVA语言是一种可移植的,简单的,健壮的嵌入式语言.并且对网络,数据库有很好的支持,基于JAVA语言的这种特性可以十分容易地建立一个小型INTERNET服务器. 本项目中,作者用JAVA语言编写了一个WEB微型服务器,对简单的HTTP请求进行响应,并通过后端数据库对用户的查询进行处理,从而动态地返回HTML页面. 二.项目实现: (一)项目具体功能分析与开发工具选择 可以利用一台较高配置的个人台式机就可以实现社区内的小型服务器,包括网页浏览,基于高速局域网的视频下载和播放,定时

led对接-LED屏对接,使用java语言

问题描述 LED屏对接,使用java语言 本人初级菜鸟级别,大神们如知道,希望细说,最好有demo提供,急需,在此跪谢! 解决方案 要看你的led的设备,一般是com口通讯,咨询下厂家 解决方案二: 没看懂你说的,硬件么?

Java语言常用语一览

  不介绍Java 常用语,对Java 的总体介绍就是不完整的.尽管促使Java 诞生的源动力是可移植性和安全性,但在Java 语言最终成型的过程中,其他一些因素也起了重要的作用.Java 设计开发小组的成员总结了这些关键因素,称其为Java 的专门用语,包括下面几个: · 简单(Simple) · 安全(Secure) · 可移植(Portable) · 面向对象(Object-oriented) · 健壮(Robust) · 多线程(Multithreaded) · 体系结构中立(Archi

Java语言中字符的处理

山西省网络管理中心任军 ----摘要:本文主要讨论了Java语言中字符的特殊表达形式,尤其是中文信息的表达处理,阐述了字符处理的关键是要将十六位Unicode字符,转换为本地下层平台,也就是运行Java虚拟处理机的平台能够理解的字符形式. ----关键词:Java.字符.8位.16位.Unicode字符集 ----Java是一种编程语言.一个运行系统.一套开发工具和一个应用程序编程界面(API).Java建立在C++的熟悉.有用的特征之上,而取消了C++的复杂的.危险的和多余的元素.它是一个更安

Java语言学习的要点

    Java的学习是比较复杂的,主要表现在相关的一系列平台.规范和协议上.有经验的Java程序员都知道,只掌握了Java语言本身很难开发应用程序.本文不讨论这些复杂的概念,而是从初学者的角度,对于Java语言本身的学习提出自己的见解和建议.本文的讨论基于以下假设:? 学习的目的是为了将来进行应用程序的开发,而不是进行语言理论研究? 将来的应用开发是在成熟的平台上展开,而不是自己从底层开发平台掌握静态方法和属性静态方法和属性用于描述某一类对象群体的特征,而不是单个对象的特征.java中大量应用

Java语言编码规范(Java Code Conventions)

编码|规范   1 介绍(Introduction)1.1 为什么要有编码规范(Why Have Code Conventions)编码规范对于程序员而言尤为重要,有以下几个原因:- 一个软件的生命周期中,80%的花费在于维护- 几乎没有任何一个软件,在其整个生命周期中,均由最初的开发人员来维护- 编码规范可以改善软件的可读性,可以让程序员尽快而彻底地理解新的代码- 如果你将源码作为产品发布,就需要确任它是否被很好的打包并且清晰无误,一如你已构建的其它任何产品 为了执行规范,每个软件开发人员必须

学习java语言思想 了解java语言优势

虽然Java技术是那么的诱人,前景也似乎非常光明,但是不是已经有了C.C++等广泛应用并且大获成功的语言了吗?微软不是又在大力推广他们的.Net技术吗?LISP.Prolog等人工智能语言在北美洲.欧洲的金融领域不是也有很大的应用吗?学习Java编程,是不是一个明智的选择呢? 带着这些问题,让我们来看看Java的优势. 1.免费! Sun免费提供用来开发Java应用程序的一切,你不必付任何的版税.或许你会将信将疑:资本家搞共产了?实际上,Sun在Java上的收益确实不大,远远比不过垄断Java应

第三讲 Java语言中的面向对象特性

对象 [课前思考] 1. 什么是对象?什么是类?什么是包?什么是接口?什么是内部类? 2. 面向对象编程的特性有哪三个?它们各自又有哪些特性? 3. 你知道java语言在面向对象编程方面有何独特的特点吗? 难点: 1. 理解方法重载和方法重写,不要混淆了两者的使用. 2. 类变量和类方法的使用. 3. 接口的使用.3.1 面向对象技术基础 3.1.1 面向对象的基本概念 面向对象的基本思想 面向对象是一种新兴的程序设计方法,或者是一种新的程序设计规范(paradigm),其基本思想是使用对象.类

第一讲 Java语言概述

★ 第一讲 Java语言概述 [课前思考] 1. 一门新的语言的产生是否需要借鉴以前的编程语言? 2. 在java语言出现之前是否存在其它跨平台的语言? 3. 有哪些编程语言是面向对象的?而哪些编程语言是面向过程的?从编程思路上存在着哪些本质差别?C++语言是面向对象的还是面向过程的? 4. 一段优秀的程序代码是否应该是可读性极强的?程序员之间是否应该遵循相同的编程规范? 5. 一个程序员编好的代码如果需要让别的程序员使用,如何提供该代码的使用说明? 1.1 java语言的发展史 1.1.1 j

第二讲 Java语言基础知识

概述: [课前思考] 1. Java中的标识符是由哪些字符组成的? 2. Java中有哪些保留字?简单数据类型包含哪几种?各种数据类型变量的定义方法和常量的表示方法及取值范围. 3. Java 中各简单数据类型间的优先次序和自动转换规则是什么? 各数据类型间在什么情况下,进行自动转换,在什么情况下使用强制转换? 4. Java中有哪些运算符?这些运算符的优先关系是怎样的? 5. Java 中有哪些控制语句?你了解每一种控制语句的语法规则吗? 6. Java 中的一维数组和多维数组在数组动态初始化