java实训报告_9_第1页
java实训报告_9_第2页
java实训报告_9_第3页
java实训报告_9_第4页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、java实训报告实习报告实习性质:java面向对象编程课程实习学生姓名:专业班级:指导教师:实习时间:实习地点:xxxxxxxxxxxxx学院 学生实习考核表 目录 1 实习目的 (1)2 实习概况 (1)2.1 实习要求 (1)2.2 实习时间 (1)2.3 实习环境 (1)2.4 开发环境 (1)3 实习内容 (1)3.1 设计模式 (1)3.1.1 单例模式 (1)3.1.2 观察者模式 (3)3.1.3 代理模式 (4)3.1.4 集合应用 (5)3.2 访问数据库 (6)3.2.1 连接数据库 (6)3.2.2 添加数据 (7)3.2.3 查询数据 (8)3.2.4 修改数据 (8)

2、3.2.5 删除数据 (8)3.3 游戏设计 (9)3.3.1 游戏设计分析 (9)3.3.2 登陆窗口设计 (10)3.3.3 注册窗口设计 (10)3.4 游戏需求: (10)3.4.1 地图文件的引用 (11)3.4.2 详细设计 (11)4 学习总结 (17)4.1 学习所得 (17)4.2 经验教训 (17)4.3 实训体会 (18) 信息工程学院java面向对象实训报告1 实习目的 综合运用在校期间所学到的理论知识和技能,让自己能够熟悉并熟练应用系统的开发过程,培养独立思考能力,检验学习成果和实际动手能力,以及提高工程实践能力,为今后的工作打下坚实的基础。2 实习概况2.1实习要求

3、1.设计模式(1)单例模式(2)观察者模式(3)代理模式2.集合应用设计一个案例,用集合解决实际问题3.访问数据库设计一个案例,连接数据库,进行添加、删除、修改、查询4.综合应用设计一个用图形界面的数据库应用程序(小型管理系统),或一个小游戏注意:实习报告要图文并茂,注重分析、设计过程和经验总结,代码所占篇幅不超过整个篇幅的一半。2.2 实习时间xxxxxxx2.3 实习环境xxxxxx实训室2.4 开发环境操作系统(win10)使用软件(eclipse、navicat)数据库(mysql)3 实习内容3.1 设计模式3.1.1 单例模式1、饿汉模式饿汉模式是最简单的一种实现方式,饿汉模式在类

4、加载的时候就对实例进行创建,实例在整个程序周期都存在。它的好处是只在类加载的时候创建一次实例,不会存在多 个线程创建多个实例的情况,避免了多线程同步的问题。它的缺点是即使这个单例没有用到也会被创建,而且在类加载之后就被创建,内存就被浪费了。 1 2 3 4 5 6 7 public class singletonprivate static singleton instance = new singleton();private singleton()public static singleton newinstance()return instance;2、懒汉模式懒汉模式中单例是在需要的时

5、候才去创建的,如果单例已经创建,再次调用获取接口将不会重新创建新的对象,而是直接返回之前创建的对象。如果某个单例使用的次数少,并且创建单例消耗的资源较多,那么就需要实现单例的按需创建,这个时候使用懒汉模式就是一个不错的选择。但是这里的懒汉模式并没有考虑线程安全问题,在多个线程可能会并发调用它的getinstance()方法,导致创建多个实例,因此需要加锁解决线程同步问题,实现如下。1 2 3 4 5 6 7 8 9101112131415 public class singletonprivate singleton()private static singleton instance;pub

6、lic static singleton getinstance()if(instance = null)return instance = new singleton();elsereturn instance;两个线程的instance都为空,这样就会生成两个实例。解决的办法是同步:1 2 3 4 5 6 7 8 9 public class singletonprivate singleton()private static singleton instance;public static synchronized singleton getinstance() if(instance

7、= null)return instance = new singleton();else 3、双重校验锁加锁的懒汉模式看起来即解决了线程并发问题,又实现了延迟加载,然而它存在着性能问题,依然不够完美。synchronized修饰的同步方法比一般方法要慢很多,如果多次调用getinstance(),累积的性能损耗就比较大了。因此就有了双重校验锁,先看下它的实现代码。1 2 3 4 5 6 7 8 9101112131415 public class singletonprivate static singleton single; /声明静态的单例对象的变量private singleton(

8、) /私有构造方法public static singleton getsingle() /外部通过此方法可以获取对象if(single = null)synchronized (singleton.class) /保证了同一时间只能只能有一个对象访问此同步块if(single = null)single = new singleton();return single; /返回创建好的对象3.1.2 观察者模式当对象间存在一对多关系时,则使用观察者模式。察者模式使用三个类subject、observer 和client。subject 对象带有绑定观察者到client 对象和从client 对

9、象解绑观察者的方法。被观察者:servermanager1 2 3 4 5 6 7 8 9 import java.util.observable;public class servermanager extends observable private int data = 0;public int getdata() return data; public void setdata(int i)if(this.data != i) this.data = i;setchanged();notifyobservers(); /只有在setchange()被调用后,notifyobserver

10、s()才会去调用update(),否则什么都不干。 观察者一:aobserver 1 2 3 4 5 6 7 8 910111213 import java.util.observable;import java.util.observer;public class aobserver implements observer public aobserver(servermanager sm) super();/ todo auto-generated constructor stubsm.addobserver(this);/注册加入观察者overridepublic void update

11、(observable arg0, object arg1) system.out.println(aobserver: +(servermanager) arg0).getdata(); 观察者二:bobserver1 2 3 4 5 6 7 8 910111213 import java.util.observable;import java.util.observer;public class bobserver implements observer public bobserver(servermanager sm) super();sm.addobserver(this);/注册加

12、入观察者overridepublic void update(observable o, object arg) / todo auto-generated method stubsystem.out.println(bobserver +(servermanager) o).getdata(); 测试:1 2 3 4 5 6 7 8 9 public class testdemo public static void main(string args) servermanager sm = new servermanager();aobserver a = new aobserver(sm)

13、;bobserver b = new bobserver(sm);sm.setdata(5);sm.deleteobserver(a);/注销观察者,以后被观察者有数据变化就不再通知这个已注销的观察者 sm.setdata(10);3.1.3 代理模式代理模式可以有两种实现的方式,一种是静态代理类,另一种是各大框架都喜欢的动态代理。 实现了subject 接口的第一个类:1 2 3 4 5 6 7public class realsubject implements subject private string name = byhieg; overridepublic void visit(

14、) system.out.println(name); 实现了subject 接口的第二个类:1 2 3 4 56 789 10 public class proxysubject implements subject private subject subject;public proxysubject(subject subject) this .subject = subject; override public void visit() subject.visit(); 具体的调用如下:1 2 34 5 6 public class client public static void

15、main(string args) proxysubject subject = new proxysubject(new realsubject();subject.visit(); 3.1.4 集合应用集合类存放的都是对象的引用,而非对象本身,出于表达上的便利,我们称集合中的对象就是指集合中对象的引用(reference)。集合类型主要有3种:set(集)、list(列表)和map(映射)。利用集合管理图书。 5 6 7 8 9 10111213141516171819 public class library private string libraryname;private coll

16、ection collection=new arraylist();public void printbook() system.out.println(this.libraryname + 收录了:); iterator iterator = collection.iterator();for (int i = 0; i boolean ishasnext = iterator.hasnext();if (ishasnext = true) book book = (book) iterator.next();system.out.println(book.tostring();book类1

17、 2 3 4 5 6 7 8 910111213141516171819 public class book private string kind;private string bookname;private string author;public book() super();public book(string kind, string bookname, string author) super();this.kind = kind;this.bookname = bookname;this.author = author;overridepublic string tostring() / todo auto-generated method stubreturn书类: + kind +t+ 书名: + bookname +t+ 作者: + author+t; 3.2 访问数据库3.2.1 连接数据库这次用的数据库是mysql,是安装在虚拟机centos7上的,用户root,数据库test,连接端口3306。使用mys

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论