• java第三次实验作业


    (一)学习总结

    1.什么是面向对象的封装性,Java中是如何实现封装性的?试举例说明。
    封装把对象的所有组成部分(数据和方法)封装在一起构成类。
    对象本身的数据得到保护/隐藏
    其他对象通过该对象的访问方法(接口/interface)与之发生联系。
    特点是模块化,信息隐藏--通常定义一个公共接口/方法实现对对象的访问。

    class CashCard {
    String number;
    int balance;
    int bonus;
    }
    

    2.阅读下面程序,分析是否能编译通过?如果不能,说明原因。
    (1)

    class A{
        private int secret = 5;
    }
    public class Test{
        public static void main(String args[]){
            A a = new A();
            System.out.println(a.secret++);
        }
    }
    

    不能编译通过,secret被封装,不能被类外访问
    (2)

    public class Test{
        int x = 50;
        static int y = 200;
        public static void method(){
            System.out.println(x+y);
        }
        public static void main(String args[]){
            Test.method();
        }
    }
    

    字段 y 不能声明为“静态”;只能在静态或顶级类型中才能声明静态字段
    方法 main 不能声明为“静态”;只能在静态类型或顶级类型中才能声明静态方法

    3 . 使用类的静态变量和构造方法,可以跟踪某个类创建的对象个数。声明一个图书类,数据成员为编号,书名,书价,并拥有静态数据成员册数记录图书的总数。图书编号从1000开始,每产生一个对象,则编号自动递增(利用静态变量和构造方法实现)。下面给出了测试类代码和Book类的部分代码,将代码补充完整。

      class Book{
            int bookId;
            String bookName;
            double price;
            // 声明静态变量
            private static int bookNum;
            //定义静态代码块对静态变量初始化
            static{
            bookNum=1000;
        }
            //构造方法
             public Book(String bookName,double price){
            this.bookName=bookName;
            this.price=price;
            bookId=booknumber;
            booknumber++;
        }
             public String getBookName() {
                return bookName;
            }
            public void setBookName(String bookName) {
                this.bookName = bookName;
            }
            public double getPrice() {
                return price;
            }
            public void setPrice(double price) {
                this.price = price;
            }  
            //定义方法求图书总册数
              public static int totalBook(){
            return booknumber -1000;
        }
            //重写toString方法
                public String toString(){
        return "编号:"+bookId+"书名"+this.boohName+"价格:"+this.price;
            }
        }
        public class Test{
            public static void main(String args[]){ 
                Book[] books = {new Book("c语言程序设计",29.3),
                                new Book("数据库原理",30),
                                new Book("Java学习笔记",68)};
                System.out.println("图书总数为:"+ Book.totalBook()); 
                for(Book book:books){
                    System.out.println(book.toString());
                }
            }   
        }
    

    4.什么是单例设计模式?它具有什么特点?用单例设计模式设计一个太阳类Sun。
    Java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例、饿汉式单例、登记式单例。
      单例模式有以下特点:
      1、单例类只能有一个实例。
      2、单例类必须自己创建自己的唯一实例。
      3、单例类必须给所有其他对象提供这一实例。
    懒汉式:

    public class Sun {  
        private Sun() {}  
        private static Sun single=null;  
        public static Sun getInstance() {  
             if (single == null) {    
                 single = new Sun();  
             }    
            return single;  
        }  
    }  
    

    5.理解Java参数传递机制,阅读下面的程序,运行结果是什么?说明理由。

    public class Test {
        String str = new String("你好  ");
        char[] ch = { 'w','o','l','l','d' };
        public static void main(String args[]) {
            Test test = new Test();
            test.change(test.str, test.ch);
            System.out.print(test.str);
            System.out.print(test.ch);
        }
        public void change(String str, char ch[]) {
            str = "hello";
            ch[0] = 'W';
        }
    }
    

    结果为: 你好 Wolld
    因为 str传递的是值,ch[]则传递的是地址,所以只有w 改变了

    (二)实验总结
    实验内容:
    按照下列要求完成类的设计
    (1)设计一个日期类,用于记录年、月、日,提供对日期处理的常用方法(日期输出格式xxxx-xx-xx)。
    (2)设计一个职工类,该职工类至少具有下面的属性:职工号,姓名,性别,生日,工作部门,参加工作时间,设计相应的方法。
    (3)设计一个部门类,包括下列属性:部门编号,部门名称,经理,设计相应方法。
    (4)设计一个测试类,采用对象数组模拟一个拥有两个部门,10个职工的单位,实现对相关信息的查询功能。

    先写员工类,按要求 定义需要的变量,实现基本字段的转换,,在写部门类,按要求定义需要的变量,实现基本字段的转换,之后讲员工和部门两个类里分别和员工或部门关联,在写一个日期的类,定义输出格式为xx-xx-xx

    最后写测试类,先输入静态常量,定义两个部门分别为设计部和实践部,在给两个部门分别定义一个经理,之后输出经历的信息,利用循环分别输出两个部门里各个员工的信息

    (三)代码托管
    https://git.oschina.net/hebau_cs15/Java-CS01QH.git

    代码行数(新增/累计) 学习时间(新增/累计
    目标 5000行 300小时
    第2-4周 234/300 41
    第5周 123/300 28
    第6周 163/300 8
  • 相关阅读:
    java类型转换
    JVM内存各个区域分工简单介绍
    用数组实现栈
    一些关于Spring的随笔
    设计模式学习笔记(三)之静(动)态代理模式、适配器模式
    浅谈经典排序算法
    PetStore项目总结
    设计模式学习笔记(二)之观察者模式、装饰者模式
    Spring的校验(Validator)
    设计模式学习笔记(一)之工厂模式、单例模式
  • 原文地址:https://www.cnblogs.com/JoeH/p/6672942.html
Copyright © 2020-2023  润新知