实验四 类和对象; 类的继承和派生;多态性; 接口;构造器应用

本文通过一系列实例介绍了面向对象编程的基本概念,包括类与对象的关系、类的定义、对象的声明与使用、构造方法的理解及其重载。实验内容涉及三角形、梯形和圆形类的设计,以及公司员工类和图书馆管理系统类的实现,展示了在实际问题中如何运用面向对象的思想进行编程。此外,还涉及了字符串操作,如提取日期、替换字符串、获取特定字符等。这些练习有助于巩固和深化对Java编程中面向对象特性的理解。
摘要由CSDN通过智能技术生成

一、实验目的

1  掌握类与对象的关系;

2  掌握类的定义;

3  掌握对象的声明及使用;

4  掌握构造方法的概念及调用时机;

5  掌握构造方法的重载;

6  掌握匿名对象的使用。

二、实验学时

2 学时

三、实验类型 验证性实验

四、实验需求

1、硬件

每位学生配备计算机一台

2、软件

Windows XP 操作系统, JDKeclipse MySQL

3、网络

4、工具

五、实验理论与预备知识

1  类与对象的关系;

2  类的定义;

3  对象的声明及使用;

4  构造方法的概念及调用时机;

5  构造方法的重载;

6  匿名对象的使用。

六、实验内容与结果

1  编写一个应用程序, 该程序中有 3 个类: Trangle Leder  Circle,分别用来刻画“三角形”、“梯 形”和“圆形”。

要求: Trangle 类具有类型为double 的三个边,以及周长、面积属性, Trangle 类具有返回周

长、面积以及修改三个边的功能。另外, Trangle 类还具有一个 boolean 型的属性, 该属性用

来判断三个属能否构成一个三角形。 Lader 类具有类型double 的上底、下底、高、面积属性

package xxbb;

class Trangle

{

double sideA,sideB,sideC,area,length;

boolean boo;

public Trangle(double a, double b, double c)

{

sideA=a;sideB=b;sideC=c;

if(a+b>c&&a+c>b&&b+c>a) boo=true;

else boo=false;

}

double getLength()

{

if(boo) {

length=sideA+sideB+sideC;

return length;

}

else {

System.out.println("不是一个三角形,不能计算周长");

return 0;

}

}

public double getArea() {

if(boo) {

double p=(sideA+sideB+sideC)/2.0;

area=Math.sqrt(p*(p-sideA)*(p-sideB)*(p-sideC));

return area;

}

else {

System.out.println("不是一个三角形,不能计算面积");

return 0;

}

}

public void setABC(double a,double b,double c) {

sideA=a;sideB=b;sideC=c;

if(a+b>c&&a+c>b&&b+c>a) boo=true;

else boo=false;

}

}

class Lader

{

double above, bottom,heigth,area;

Lader(double a,double b,double h){

above=a;bottom=b;heigth=h;

}

public double getArea()

{

area=(above+bottom)/2*heigth;

return area;

}

}

class Circle

{

double radius,area;

Circle(double r){

radius=r;

}

double getArea()

{

return 3.14*radius*radius;

}

double getLength()

{

return 2*3.14*radius;

}

}

public class zyy {

public static void main(String[] args) {

double length,area;

Circle circle=null;

Trangle trangle;

Lader lader;

circle=new Circle(10);

trangle=new Trangle(3,4,5);

lader=new Lader(3,4,10);

length=circle.getLength();

System.out.println("圆的周长:"+length);

area=circle.getArea();

System.out.println("圆的面积:"+area);

length=trangle.getLength();

System.out.println("三角形的周长:"+length);

area=circle.getArea();

System.out.println("三角形的面积:"+area);

area=lader.getArea();

System.out.println("梯形的面积::"+area);

trangle.setABC(12, 34, 1);

area=trangle.getArea();

length=trangle.getLength();

}

}

2  编写一个公司员工类。

1 数据成员:员工号、姓名、薪水、部门。

2 方法: ①设置数据成员信息; ②显示信息。

要求:利用构造方法完成设置信息,其中有四个重载的构造方法

单参:只传递员工号,则员工姓名:无名氏。薪水: 0,部门:未定。

双参:传递员工号,姓名,则员工薪水为 1000,部门:后勤

4 参:传递员工号,姓名,部门,薪水

无参:则均为空值

package xxbb;

class Employee

{

private String num;

private String name;

private float salary;

private String department;

// 无参

public Employee()

{

}

// 单参

public Employee(String num) {

this.num=num;

this.name="无名氏";

this.salary=0;

this.department="未定";

}

// 双参

public Employee(String num ,String name ) {

this.num=num;

this.name=name;

this.department="后勤";

this.salary=1000;

}

// 4参

public Employee(String num,String name,float salary,String department) {

this.num=num;

        this.name=name;

        this.department=department;

        this.salary=salary;

}

public void print(){

    System.out.println("员工编号为:"+num);

    System.out.println("员工姓名:"+name);

    System.out.println("部门:"+department);

    System.out.println("薪水:"+salary);

    System.out.println();

    }

}



public class two {



public static void main(String[] args) {



 Employee emp1=new Employee();

        emp1.print();

        Employee emp2=new Employee("010101");

        emp2.print();

        Employee emp3=new Employee("020202","张三");

        emp3.print();

        Employee emp4=new Employee("030303","李四",3000,"人资");

        emp4.print();

}

}

3  完成图书馆管理系统中相关的类定义。

1 定义与编写学生 student 类, 学生属性包括“学号”、“姓名”、“性别”、“专业”、“班级”。

2 定义与编写图书 book 类, 图书属性包括“书名”、“ISBN 号”、“册数”。

3 登陆角色 role 类,角色类包括“用户名”、“密码”、“角色类型”。

要求: 1、完成以上各类中的 setter  getter 接口

2、测试以上各类,并写出每个测试用例

package xxbb;

class student{

private String nom;

private String name;

private String sex;

private String spe;

private String gra;

public student(String nom,String name,String sex,String spe,String gra) {

this.setNom(nom);

this.setName(name);

this.setSex(sex);

this.setSpe(spe);

this.setGra(gra);

}

public String getNom() {

return nom;

}

public void setNom(String nom) {

this.nom=nom;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}



public String getSex() {

return sex;

}

public void setSex(String sex) {

this.sex = sex;

}

public String getSpe() {

return spe;

}

public void setSpe(String spe) {

this.spe=spe;

}

public String getGra() {

return  gra;

}

public void setGra(String gra) {

this.gra=gra;

}

public void print1(){

    System.out.println("学号为:"+nom);

    System.out.println("学生姓名:"+name);

    System.out.println("性别:"+sex);

    System.out.println("专业:"+spe);

    System.out.println("班级:"+gra);

    System.out.println();

    }

}

class book{

private String bookname;

private String isbn;

private String sum;

public book(String bookname,String isbn,String sum) {

this.setBookname(bookname);

this.setIsbn(isbn);

this.setSum(sum);

}

public String getBookname() {

return bookname;

}

public void setBookname(String bookname) {

this.bookname=bookname;

}

public String getIsbn() {

return isbn;

}

public void setIsbn(String isbn) {

this.isbn=isbn;

}

public String getSum() {

return sum;

}

public void setSum(String  sum) {

this.sum=sum;

}

public void print2(){

    System.out.println("书名为:"+bookname);

    System.out.println("ISBN:"+isbn);

    System.out.println("册数:"+sum);

    System.out.println();

    }

}

class role{

private String username;

private String password;

private String bleed;

public role(String username,String password,String bleed) {

this.setUsername(username);

this.setPassword(password);

this.setBleed(bleed);

}

public String getUsername() {

return username;

}

public void setUsername(String username) {

this.username=username;

}

public String getPassword(){

return password;

}

public void setPassword(String password) {

this.password=password;

}

public String getBleed() {

return bleed;

}

public void setBleed(String bleed) {

this.bleed=bleed;

}

public void print3(){

    System.out.println("用户名为:"+username);

    System.out.println("密码:"+password);

    System.out.println("角色类型:"+bleed);

    System.out.println();

    }

}

public class zyy {



public static void main(String[] args) {

student stu=new student("017","赵永源","男","软件工程","2020级");

stu.print1();

book bo=new book("Java开发实战经典","123456","100");

bo.print2();

role ro=new role("yuan","123456","学生");

ro.print3();

}



}

4  字符串操作。

1 从字符串“Java 技术学习班 20121205”中提取开班日期。

2 将字符串“Java 技术学习班 20121205”中的“Java”替换为“JavaEE”。

3 取出“Java 技术学习班 20121205”第八个字符。

4 清除“Java 技术学习班 20121205”中所有的“0”。

5 从任意给定的身份证号中提取此人的出生日期。

package xxbb;

import java.util.Scanner;

public class yuan {



public static void main(String[] args) {

String str1="Java 技术学习班 20121205";

System.out.println(str1.substring(10));

String newStr1=str1.replace("Java","JavaEE");

System.out.println(newStr1);

String str2="Java 技术学习班 20121205";

System.out.println(str2.charAt(8));

String newstr2=str2.replace("0","");

System.out.println(newstr2);

Scanner sc=new Scanner(System.in);

String s=sc.nextLine();

if(s.length()!=18) {

System.out.println("请输入正确的身份证号。");

}

else

{

String s1=s.substring(6,14);

System.out.println(s1);

}

}



}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值