




已阅读5页,还剩39页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章 货物管理,项目-货物管理,项目目标:通过项目的实施了解变量作用域的概念;掌握包的定义及其包中类的引用;掌握this关键字的含义及其使用场合;熟练使用各种访问控制修饰符及static修饰符;认识静态初始化块;明确String与StringBuffer的区别与联系;熟练掌握ArrayList类的常用成员方法 项目任务: 该项目要编程实现一个货物管理的简单功能。能描述货物的编号、名称,能显示某特定货物的相关信息。能描述货物的类别以,显示该类别的所有货物信息以及为该类别添加一个货物。能根据货物名称查找货物,将某个货物或某些货物添加到它所隶属的类别里,能显示该系统中所有的货物类别及其该类别中的所有货物信息。 GoodsManageTest.java,项目分析,根据项目任务描述的项目功能需求,本项目需要定义四个类,具体可以按照以下过程实现: (1) 货物类,描述货物的名称,编号(要求能够自动生成无需外界赋值实现)。这个类有带参的构造方法和无参的构造方法,同时还要提供一个显示该货物所有信息的方法。 (2) 货物类别类,描述该类货物的类别名称,该类货物的成员编号。除了构造方法,访问器方法,显示该类所有信息的方法外还要定义一个为该类添加成员的方法。 (3) 货物管理类。该类可以按类别存放管理的所有货物信息,为方便使用应提供如下功能: 可以根据货物名称进行查找如果找到返回该类别对象的一个引用否则返回空; 可以增加一个货物,首先进行查找,如果是此货物类别已经存在则只是在已有的货物成员中添加该货物的编号,否则需要创建该货物所隶属的货物类别类对象,并将该对象添加到货物列表里; 可以增加一组货物; 显示此系统中的所有货物类别的详细信息。 (4) 货物管理测试类,测试货物管理类的各项功能。,技术准备,构造方法的重载 变量的作用域 this关键字 包 访问控制修饰符 static修饰符 String和StringBuffer ArrayList,构造方法的重载,构造方法的重载与方法的重载相同 示例:Student.java,变量的作用域,属性: 类的作用域,有默认值 局部变量(变量): 块的作用域,没有默认值 示例:Scope.java Scope1.java,变量的初始化,当一个对象创建时,会对其中各种类型的属性(成员变量)进行默认的初始化。 在一个方法内部定义的变量必须自行进行初始化赋值,关键字this,示例:RectangleTest3 .java this代表类的当前对象 利用“this.”可以调用当前对象的成员 this可以实现构造方法的调用 利用this(参数)可以调用构造方法 必须写在构造方法的第一条,包,Java中使用包来管理类 定义包(将类放入包中) package 包名 例如:package java.myPackage; 示例:A.java 注意,package必须写在程序的第一条,包,使用其他包中的类 Import 包名.类名 例:import myPackage.myClass; 示例:Package_Test.java 注意:只能引入其他包中的public类,包,注意: package必须是第一条语句 只能使用其他包中的public类 没有定义包名的类属于无名包,不能被有名包引用 如果一个程序中使用两个包中的类同名,在使用类名前加上包名前缀,练习,定义一个类A,放到pack1包中; 定义一个类B,放到pack2包中; 在类B中定义main方法,在main方法中创建类A的对象。 观察:两个类的字节码文件的位置,访问控制修饰符,类的访问控制修饰符 public:包内外都可访问 默认:只能包内访问 示例:AA.java AATest.java,访问控制修饰符,类成员的访问控制修饰符 public:包内包外可访问 protected:包内包外子类可访问 默认:包内可访问 private:类内可访问,访问控制修饰符,建议 方法和构造方法一般为public 属性一般为private 对私有属性的访问通过访问器方法完成(set方法和get方法),static,静态属性 用static修饰的属性,也称为类属性 用于描述一类对象共享的属性 比如:员工的最低工资,学生的学校名称等等 可通过类名直接调用,也可通过对象调用 示例: EmpTest .java,static,静态方法 用static修饰的方法,也叫类方法 静态方法中不能访问非静态成员 如果一个方法中没有访问非静态成员,则这个方法可以声明成静态的,要点,创建 静态属性和静态方法在第一次使用类的时候创建,所有类的对象共享 非静态属性和非静态方法在创建对象的时候创建,每个对象之间独立,要点,使用 在类外,静态属性和静态方法可以通过类名直接调用,也可以通过对象名调用。 在类外,非静态属性和非静态方法只能通过对象名调用。,要点,限制 静态方法中不能直接访问本类的非静态成员。 构造方法不能是静态的。,要点,建议 描述对象共享的属性,一般声明成静态的。 如果方法中没有直接访问本类的非静态成员,一般可以声明成静态的。,静态初始化器,构造方法用于初始化对象,主要是对非静态属性初始化。 静态初始化器用于类的初始化,主要是对静态属性的初始化。 Student.java,静态初始化器,语法 static 初始化语句(组); ,要点,静态初始化器用于对类的初始化,构造方法用于对象的初始化 静态初始化器在第一次使用类的时候调用,构造方法是用new创建对象时调用,String类,Java中使用String类的对象表示字符串 例如: String s1 = “ this is a string”; String s2 = new String(“another”); String s3 = s1+s2;,String类中常用方法,boolean equals(Object o) 判断该字符串是否与目标字符串相等 boolean equalsIgnoreCase(Object o) 不区分大小写比较是否相等 int compareTo(String s) 按照字典顺序比较当前字符串与目标字符串 注意:字符串的比较不能用“=”比较,String类中常用方法,int length() 获取字符串的长度 char charAt(int index) 获取指定位置的字符,index从0开始 String substring(int from,int end) String substring(int from) 获取字符串的子串,String类中常用方法,int indexOf(char c) int indexOf(char c,int from) int indexOf(String s) int indexOf(String s,int from) 查找指定字符或者字符串的位置,如果未找到返回1,String类中常用方法,String trim() boolean endsWith(String s) boolean startsWith(String s) String replace(char old,char new) String replaceFirst(String o,String n) String replaceAll(String o,String n) String split(String regex) 示例: StringTest .java,StringBuffer,String构造的字符串一旦创建不能修改 StringBuffer的内容可以修改 append方法 insert方法 delete方法 deleteCharAt方法,String与基本数据类型之间的转换,字符串其他数据类型 int i1 = Integer.parseInt(“111”); int i2 = new Integer(“111”).intValue(); int i3 = Integer.valueOf(“111”); int i4 = new Integer(“111”); 其他数据类型字符串 String out1 = new Integer(100).toString(); String out2 = String.valueOf(100) ; String out3 = “”+100;,ArrayList,该类的构造方法有3种: ArrayList(),构造一个初始化为10的空的链表; ArrayList(Collection c),使用1个已经存在的集合构造一个链表,集合中的元素在新的链表中的顺序由集合的iterator方法决定。 ArrayList(int initialCapacity),构造一个由参数指定初始化空间大小的的链表。,向集合中添加对象的方法 public void add(int index,Object o),第一个参数表示要添加的元素的位置,从0开始。 public boolean addAll(int index,Collection c),第一个参数表示位置,如果不指定位置,默认在最后添加。 public boolean add(Object o),在链表的最后添加参数指定的元素。 public boolean addAll(Collection c),在链表最后添加参数指定的所有元素,删除特定的元素 public boolean remove(Object o),删除指定的某个元素。 public boolean removeAll(Collection c),删除指定的多个元素。 public void clear(),删除所有的元素。 public boolean retainAll(Collection c),只保留指定集合中存在的元素,其他的都删除,相当于取两个集合的交集。 public Object remove(int index),参数用于指定要删除的元素的位置。,获取某个元素或者获取某些元素 public Object get(int index),获取指定位置的元素。 public List subList(int fromIndex,int toIndex),获取从fromIndex到toIndex这些元素,包括fromIndex,不包括toIndex。,查找某个元 素 public int indexOf(Object o),查找元素在集合中第一次出现的位置,并返回这个位置,如果返回值为-1,表示没有找到这个元素。 public int lastIndexOf(Object o),查找元素在集合中最后一次出现的位置。 public boolean isEmpty,用于判断集合是否是空的。 public boolean contains(Object o),判断是否包含指定的元素。 public boolean containsAll(Collection c),判断是否包含指定的多个元素。 public int size(),用于获取集合中元素的个数。,修改元素的方法 public Object set(int index,Object o),用第二个参数指定的元素替换第一个参数指定位置上的元素。,转换成其它对象 public ListIterator listIterator(),把所有元素都转换成有顺序的迭代器。 public ListIterator listIterator(int index),从index开始的所有元素进行转换。 public Iterator iterator(),转换成迭代器,方便集合中元素的遍历。 public Object toArray(),转换成集合,也是方便集合中元素的遍历。,ArrayList的遍历 可以采用下面的3种方式进行遍历。 方法一: for(int i=0;i i = list1.iterator(); while(i.hasNext() String temp = i.next(); System.out.println(temp); ,项目学做,根据项目任务的描述要求,有四个类定义,为了使用方便将它们统一定义在包classandobj中。如果四个类定义都放在一个源文件里,则只有类GoodsManageTest可以被public修饰且源文件的名字亦应定义为GoodsManageTest.java。为了清晰起见,我们将四个类分别放到四个源文件中,则此四个类均可被public修饰,且源文件名字和类名一致即可。 (1) 货物类根据定义应该有两个私有属性:字符串类型的货物名称,字符串类型的货物编号。但由于要求编号能够自动生成无需外界赋值实现,实质是暗示还需要一个静态的整型属性表示当前系统共有的货物数目,而每个货物的具体编号是在已有的货物数目基础上加1实现的。对于私有属性因其不便于被外界访问,需要为每个私有属性提供一对共有的访问器方法。显示该货物的所有信息,就是以字符串的形式返回各个属性值,(2) 对于货物类别类,需要提供一种存储结构来存放该类别的所有货物的编号,考虑到其成员数目不确定且动态变化,因此可以采用ArrayList这种动态数组作为存储结构,由于其中存储的永远是Goods对象,在定义时可以为其加上泛型的限定。添加货物成员的方法,本质就是在ArrayList对象中追加一个Goods元素。显示该类所有信息时可以使用String类的字符串连接方式实现,但String通常用来表示字符串常量,不适用于频繁变化的情况,因此在进行
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025福建中能电气股份有限公司招聘23人笔试历年参考题库附带答案详解
- 2025安徽芜湖市鸠江文化旅游投资有限公司招聘2人笔试历年参考题库附带答案详解
- 2025河南洛阳市西工区第一批招聘公益性岗位人员100名考前自测高频考点模拟试题及答案详解(历年真题)
- 2025广西百色市教育局招聘百色市励志学校后勤服务人员9人考前自测高频考点模拟试题附答案详解(典型题)
- 2025年甘肃庆阳庆城县事业单位引进高层次和急需紧缺人才(第三批)考前自测高频考点模拟试题及一套答案详解
- 2025年潍坊护理职业学院公开招聘控制总量工作人员(30人)模拟试卷及答案详解一套
- 2025年安庆望江县中医医院赴高校招聘19人模拟试卷附答案详解(考试直接用)
- 2025海南保亭黎族苗族自治县市场监督管理局公益性岗位人员招聘1人模拟试卷及1套参考答案详解
- 2025广西河池市天峨县自然资源局招聘机关事业单位编外聘用人员2人模拟试卷及1套完整答案详解
- 2025内蒙古锡林郭勒盟太仆寺旗乌兰牧骑招聘事业编制舞蹈演员2人考前自测高频考点模拟试题及答案详解(易错题)
- 农业综合行政执法大比武试题库(试题及答案)
- 2025年零碳园区发展白皮书-荣续ESG智库
- 国企新员工入职纪检培训
- 统编版(2024)八年级上册道德与法治5.2《诚实守信》教案
- 质量经理工作汇报
- 学堂在线 走进心理学 章节测试答案
- 学堂在线 极区航海导航保障 期末考试答案
- 化工安全技术课件下载
- 初中诚实守信说课课件
- 小儿急性胰腺炎护理常规
- 英语词性介绍课件
评论
0/150
提交评论