前言
决定一张照片的好坏是后面的头脑而不是器材。接下来讲述java中的方法解析。
本文讲述方法的理论和方法的案例。在将方法之前,我先说一下我的学习java的方法;我是先理解了方法与方法之间的关系,主要是他们之间的执行顺序和调用关系。
通过一个练习加强理解,进而继续理解类与类的关系,最后理解包与包的关系。
方法 理论
定义语法
修饰符 返回值 方法名(参数列表){
return 值 //值的类型一定要与返回值的类型匹配
}
调用语法
方法名 (值1,值2);
注:a.方法调用的传值,值的类型应与定义对应位置类型一致;方法没有返回值,使用void关键字占位,可以不需要返回值,如果需要返回值 return;
b.java只有一种传值方式,就是值传递。
形参:在方法定义时,存在于参数列表中的变量
作用:用来接收来自实参所传递的值。
实参:在方法调用时,存在参数列表的值或变量。
作用:传值给形参。
注:Scanner :提供用户输入管道,下面案例要使用的方法。
import java.util.Scanner;
Scanner sc=new Scanner(System.in);
api方法:
long nextLong() 阻塞方法,用户必须输入数据,程序才继续执行
String next() 从控制台读取字符串(不允许带空白:\t ;)
String nextLine() 从控制台读取字符串(允许带空白)
注:在使用nextLine时,需要独立创一个管道,否则,nextLine()就会将上次的输入的回车记录为用户输入的字符串。
所有的方法都直接或者间接的被main方法调用;main方法是应用程序的入口点。
案例
在讲解试卷系统之前,先来讲讲需要补充的UML语言。
1.知识的补充:类的3种关系
在画UML 图的类图(Class Diagram)时,要先了解一下类的3种关系:
注:UML使用类图表示类,接口以及关联。类图用于静态建模。类图由3部分组成(类名,属性,操作),示例图如图1-1

在UML中,事物之间相互联系的方式(无论是逻辑上的还是物理上的)都被建模为关系。在面向对象的建模中,有3中重要的关系:依赖,关联和泛化。
1)依赖(dependency)是使用关系。例如,水管依赖热水器,对它们所运送的水进行加热。说明一个事物使用另一个事物的信息和服务。
示例图1-2:

2)关联(association)是实例之间的结构关系。例如,一个房间是由墙和一些其他事物组成的,墙上可以嵌套门和窗,管道可以穿通墙体。
类之间的关联关系大多用来表示变量实例持有着其他对象的引用。
这时我想起了一句话:编程来源于生活,理解了生活,就理解编程。
1))具体的示例:

其中,还有聚合与组合都是关联的一种特殊形式。聚合它意味着整体和部分的关系;而组合是一种特殊的聚合形式。
3)泛化(generalization),把一般类连接到较为特殊的类,也称为超类和子类关系。称为is-a-kind-of关系。
例如,观景窗是一种带有固定的大窗格的窗户,庭院是一种带有向两边开的窗格的窗户。
示例图1-3:

2.案例实现
需求是使用方法之间的调用关系,来完成一个试卷系统。该试卷系统有试卷Paper类,Choice抽象类,以及Choice的两个子类MultChoice和SingleChoice类。
实现一个可以在控制台录入当选题和多选题,并答题的系统。
他们之间的UML由于较简单,就不画了。具体可参照下面的Code实现。
<script src="https://code.csdn.net/snippets/270346.js" type="text/javascript"></script>
<script src="https://code.csdn.net/snippets/270349.js" type="text/javascript"></script>
<script src="https://code.csdn.net/snippets/270354.js" type="text/javascript"></script>
<script src="https://code.csdn.net/snippets/270362.js" type="text/javascript"></script>
<script src="https://code.csdn.net/snippets/270366.js" type="text/javascript"></script>
总结
方法:用来表示对象的功能,它依赖于对象而存在。方法是动作,一般使用动词来声明
关于UML的保留和舍弃
养成舍弃UML图的习惯吧,最好,养成不要把图建立在能长期保存的介质上的习惯。在一个白板或一个草稿纸上画它们,经常擦掉白板或舍弃草稿纸。一个原则就是不使用Case工具或画图工具。这些工具只用一次即可,你的大多数UML图都是短命的。
但有一些图保存下来是非常有用的:
1.表现你的系统中一个通用设计解决方案图
2.记录了复杂的协议,难以通过代码了解的图
3.提供了比较少涉及到的系统范围的“路标图“的图
4.记录了比代码更易表述的设计意图的图。
使用UML的场景
1.作为草图-与他人交流设计方案,来指导更详细的设计或编码人员进行开发
2.作为编程蓝图和详细设计指导
3.作为系统结果的road map ,这种脉络图可以使开发者快速找到类之间的依赖关系,并提供系统结构的参考。
4.作为代码的逆向工程图——帮助代码维护人员,阅读、分析和检查代码,快速了解代码结构。
5.在理论、工具和可用性方面处于发展阶段:把UML作为编程语言,即基于UML模型驱动(MDA),用UML全程建模,完成软件系统可执行规格说明,代码自动生成。
建模语言UML
UML主要用于沟通,是大家熟悉认同的语言而已。面向对象分析和设计来源于设计者的头脑,重点是设计者的思想和理念。
比如,决定一张照片的好坏是后面的头脑而不是器材
敏捷开发工程
1.定义用例:需求分析可能包括人们如何使用应用的情节或场景
2.定义领域模型:面向对象的分析关注领域的概念,属性和关联来形成OOA结果领域模型(domain model),在领域模型中展示重要的领域对象。
3.分配对象职责,并绘制交互图:ood关注软件对象的定义-它们的职责和协作。
注:顺序图(sequence diagram)是描述协作的常见表达方式,它展示了软件对象之间的消息流,和由消息引起的方法调用
4.定义设计类:使用设计类来表示有效类定义的静态视图,重点描述类的属性和方法。
分享到:
相关推荐
李兴华的J2SE笔记集合了魔乐科技的丰富教学资源,覆盖了Java学习的关键知识点,对于Java初学者或进阶者来说,是不可多得的学习资料。 一、Java基础篇 1. 第3章:Java基础程序设计 - 运算符、表达式与语句笔记:...
综上所述,J2SE的学习笔记涵盖了接口的重要概念,包括接口的定义、语法、实现、继承、多态性以及Java 8中的默认方法和函数式接口。在实际编程中,理解和熟练运用这些知识点对于提升Java编程能力至关重要。同时,通过...
《李兴华J2SE笔记(完整版)》是一份专为Java初学者及开发者编写的详尽教程,旨在帮助读者快速掌握Java编程基础,并深入理解J2SE(Java Standard Edition)的核心概念。这份笔记由李兴华先生精心编写,以其丰富的...
Java-J2SE学习笔记Java-J2SE学习笔记Java-J2SE学习笔记Java-J2SE学习笔记Java-J2SE学习笔记Java-J2SE学习笔记Java-J2SE学习笔记Java-J2SE学习笔记
【标题】"J2se笔记本程序源码"揭示了这个项目是基于Java 2 Standard Edition (J2SE) 平台开发的一个简单的文本编辑器应用。J2SE是Java编程语言的核心部分,提供了构建桌面应用程序所需的类库和API。这个程序源码可以...
本篇学习笔记将深入探讨J2SE中的面向对象特性、关键字、访问控制以及多态等核心概念。 **面向对象**: 面向对象编程(Object-Oriented Programming, OOP)是一种编程范式,它以对象为中心,强调数据和操作数据的...
### Java 认识 #### 概念区分与版本发展 ...通过上述内容,我们可以看出 J2SE 笔记涵盖了 Java 的基础知识和技术要点,从语言特性到设计模式等多个方面进行了全面介绍。对于初学者来说,这是一个很好的起点。
这份“J2SE全套笔记”涵盖了从基础到高级的广泛主题,旨在帮助学习者全面理解Java编程语言。 笔记内容可能包括以下几个主要部分: 1. **Java基础**:这部分会介绍Java的基本语法,如变量、数据类型、运算符、流程...
在描述中提到,这份笔记特别注重J2SE的基础知识,这对于初学者来说尤其有价值。基础部分可能涵盖以下内容: - **基本语法**:包括变量、数据类型、运算符、控制结构(如if-else、switch、循环)、异常处理等。 - *...
以下是对 J2SE 学习笔记中的关键知识点的详细解释: **第二课时** 1. **Java 注释**: 注释是用于提高代码可读性的非执行文本。在Java中,有三种类型的注释: - 单行注释:`// 这是单行注释` - 多行注释:`/* 这是...
J2SE学习实例 1、Java的基础知识 2、Java面向对象 3、集合Collection的使用 4、IO使用 5、Socket编程 6、Thread线程技术 7、Subject反射技术 8、GUI图形编程
本学习笔记旨在深入理解J2SE的基础概念、核心特性以及实际应用。 一、Java基础 Java是一种面向对象的编程语言,由Sun Microsystems(现已被Oracle收购)于1995年发布。它的主要特点包括跨平台性(Write Once, Run ...
【张孝祥J2SE加强自学笔记(48-56)】主要涵盖了类加载器、代理类和动态类创建等Java核心知识点。 48、类加载器的问题实验分析: 在Java中,类加载器是负责查找并加载类的机制。在Web应用中,有多种类加载器,如...
马士兵老师讲解J2SE视频的相关笔记内容,通过思维导图的形式对主要内容进行整理.方面对相关知识的回顾和查找.文档需要通过专门的思维导图软件(Mindmanager)打开.
Java J2SE(Java Standard Edition)是Java平台的...以上是Java J2SE的一些核心知识点,这份笔记可能详细地讲解了这些内容,包括每个概念的原理、使用方法及示例代码,旨在帮助开发者全面理解并熟练运用Java进行开发。
【J2SE学习笔记】 Java 2 Standard Edition (J2SE)是Java平台的一个核心组件,主要用于桌面应用程序的开发。J2SE包含了运行和开发Java应用程序所需的全部工具和API。这个学习笔记涵盖了J2SE的基础知识,包括编程...