JAVA实验-Java语言面向对象编程基础.doc
广州大学学生实验报告开课学院及实验室:计算机科学与工程实验室2014年11月7日学院计算机科学与教育软件学院年级/专业/班姓名学号实验课程名称Java语言成绩实验项目名称Java语言面向对象编程基础指导老师一、 实验目的实验二 数据类型、表达式和输入输出1. 掌握java基本数据类型、变量极其使用。2. 理解运算符的优先级3. 掌握运算符与表达式实验三 Java流程控制1. 理解Java程序语法结构2. 掌握顺序结构、选择结构和循环结构语法的程序设计方法实验五 Java语言面向对象基础编程1. 理解Java语言是如何体现面向对象编程基本思想,2. 了解类的封装方法,以及如何创建类和对象,3. 了解成员变量和成员方法的特性。实验六 类的继承性和多态性1. 掌握OOP方式进行程序设计的方法,2. 了解类的继承性和多态性的作用。二、实验器材MacBook Pro一台操作系统:OS X Yosemite编程软件:eclipse三、 实验要求实验二 数据类型、表达式和输入输出1. 编写使用不同的数据类型变量2. 编写使用不同的运算符实验三 Java流程控制1. 编写使用不同选择结构的程序2. 编写使用不同循环结构的程序实验五 Java语言面向对象基础编程1. 编写一个体现面向对象思想的程序。2. 编写一个创建对象和使用对象的方法程序。3. 编写不同成员变量修饰方法的程序。实验六 类的继承性和多态性1. 编写体现类的继承性(成员变量,成员方法,成员变量隐藏)的程序。2. 编写体现类多态性(成员方法重载,构造方法重载)的程序。四、实验过程原始数据记录实验二 数据类型、表达式和输入输出1. 编写程序完成,将168转换成861,并将其结果输出到屏幕上2. 编写Java应用程序,把1001000的自然数中能够被3整除的数输出到屏幕上。代码:public class test_1_2 public static void main(String args) System.out.println("-1.编写程序完成,将168转换成861,并将其结果输出到屏幕上-");reverseNumber(168);System.out.println("n-2.编写Java应用程序,把1001000的自然数中能够被3整除的数输出到屏幕上。-");divideNumber(3);/反转数字static void reverseNumber(int num)int result = 0;while (num%10) != 0)result = result*10 + num%10;num = num/10;System.out.println(result);/整除数字static void divideNumber(int num)int count = 0;for (int i = 100;i <= 1000;i+)if (i%3 = 0)System.out.print(i + " ");count+;if (count%20 = 0)System.out.println();运行结果:实验三 Java流程控制1. 求解0至100之间所有偶数的和2. 打印小于1000的斐波纳契数代码:public class test_1_3 public static void main(String args) / TODO Auto-generated method stubSystem.out.println("-1.求解0至100之间所有偶数的和-");sumOfEvenNumbers();System.out.println("n-2.打印小于1000的斐波纳契数-");printFibonacci();/计算100以内偶数和static void sumOfEvenNumbers()int sum = 0;for (int i = 0;i <= 100;i+)if (i%2 = 0)sum += i;System.out.println(sum);/输出1000内斐波那契数static void printFibonacci()int f0 = 0;int f1 = 1;int fn = 0;int count = 1;System.out.print(1 + " ");while (fn = f0 + f1) < 1000)if (count % 10 = 0)System.out.println();System.out.print(fn + " ");count+;f0 = f1;f1 = fn;运行结果:实验五 Java语言面向对象基础编程1定义一个名为MyRectangle的矩形类,类中有4个私有的整型域,分别是矩形的左上角坐标(xUp,yUp)和右下角坐标(xDown,yDown);类中定义没有参数的构造方法和有4个int参数的构造方法,用来初始化类对象。类中还有以下方法: getW( )计算矩形的宽度;getH( )计算矩形的高度;area( )计算矩形的面积;toString( )把矩形的宽、高和面积等信息作为为字符串返回。编写应用程序使用MyRectangle类。2. 请定义一个名为Card的扑克牌类,该类有两个private访问权限的字符串变量face和suit:face描述一张牌的牌面值(如:"Ace", "Deuce", "Three","Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Jack", "Queen", "King");suit描述一张牌的花色(如:"Hearts", "Diamonds", "Clubs", "Spades")。定义Card类中的public访问权限的构造方法,为类中的变量赋值;定义protected访问权限的方法getFace(),得到扑克牌的牌面值; 定义protected访问权限的方法getSuit(),得到扑克牌的花色; 定义方法toString(),返回表示扑克牌的花色和牌面值字符串(如“Ace of Hearts”、“Ten of Clubs”等)。3. 设n为自然数,n的阶乘定义如下:n!=1x2x3xxn,试编写程序计算2!,4!,6!,并将结果输出到屏幕上代码:public class test_1_5 public static void main(String args) / TODO Auto-generated method stubSystem.out.println("-1.定义一个名为MyRectangle的矩形类,类中有4个私有的整型域,分别是矩形的左上角坐标(xUp,yUp)和右下角坐标(xDown,yDown);n"+ "类中定义没有参数的构造方法和有4个int参数的构造方法,用来初始化类对象。类中还有以下方法: getW( )计算矩形的宽度;n"+ "getH( )计算矩形的高度;area( )计算矩形的面积;n"+ "toString( )把矩形的宽、高和面积等信息作为为字符串返回。编写应用程序使用MyRectangle类。-n");MyRectangle rect = new MyRectangle();System.out.println(rect.toString();/*2.请定义一个名为Card的扑克牌类,该类有两个private访问权限的字符串变量face和suit: * face描述一张牌的牌面值(如:"Ace", "Deuce", "Three","Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Jack", "Queen", "King");suit描述一张牌的花色(如:"Hearts", "Diamonds", "Clubs", "Spades")。定义Card类中的public访问权限的构造方法,为类中的变量赋值;定义protected访问权限的方法getFace(),得到扑克牌的牌面值; 定义protected访问权限的方法getSuit(),得到扑克牌的花色; 定义方法toString(),返回表示扑克牌的花色和牌面值字符串(如“Ace of Hearts”、“Ten of Clubs”等)。*/System.out.println("nn-2.请定义一个名为Card的扑克牌类,该类有两个private访问权限的字符串变量face和suit:-");Card testCard = new Card();testCard.setSuit("Hearts");testCard.setFace("Ten");System.out.println(testCard.toString();System.out.println("nn-3. 设n为自然数,n的阶乘定义如下:n!=1x2x3xxn,试编写程序计算2!,4!,6!,并将结果输出到屏幕上-");System.out.println("2! = " + getFactorial(2);System.out.println("4! = " + getFactorial(4);System.out.println("6! = " + getFactorial(6);/返回阶乘结果static int getFactorial(int num)if (num <= 0)return 1;return num * getFactorial(num-1);/矩形类class MyRectangleprivate int xUp,yUp,xDown,yDown;public int getW()return Math.abs(xDown - xUp);public int getH()return Math.abs(yDown - yUp);public int area()return getH() * getW();public String toString()String s = "矩形的宽:" + getW() + ",高:" + getH() + ",面积:" + area();return s;public MyRectangle() xUp = 10;yUp = 10;xDown = 20;yDown = 20;/扑街牌class Cardprivate String face,suit;public void setFace(String face) this.face = face;public void setSuit(String suit) this.suit = suit;protected String getFace() return face;protected String getSuit() return suit;public String toString()return face + " of " + suit;运行结果:实验六 类的继承性和多态性1. 假如我们在开发一个系统时需要对员工进行建模,员工包含3个属性:姓名、工号以及工资。经理也是员工,除了含有员工的属性外,另外还有一个奖金属性。请使用继承的思想设计出员工类和经理类。要求类中提供必要的方法进行属性访问。2. 定义一个自己的数学类MyMath。类中提供静态方法max,该方法接收3个同类型的参数(例如整形),返回其中的最大值。3. 以点类作为基类,从点派生出圆,从圆派生圆柱,设计成员函数输出它们的面积和体积。代码:public class test_1_6 public static void main(String args) / TODO Auto-generated method stub/* * 1. 假如我们在开发一个系统时需要对员工进行建模,员工包含3个属性:姓名、工号以及工资。 * 经理也是员工,除了含有员工的属性外,另外还有一个奖金属性。请使用继承的思想设计出员工类和经理类。要求类中提供必要的方法进行属性访问。 */System.out.println("-1. 假如我们在开发一个系统时需要对员工进行建模,员工包含3个属性:姓名、工号以及工资。-");Manager man = new Manager();man.name = "刘呵呵"man.workNumber = 777;man.salary = 1000;man.setAward(100);System.out.println(man.toString();System.out.println("nn-2.定义一个自己的数学类MyMath。类中提供静态方法max,该方法接收3个同类型的参数(例如整形),返回其中的最大值。-");System.out.println(MyMath.Max(30, 28, 88);System.out.println("nn-3.以点类作为基类,从点派生出圆,从圆派生圆柱,设计成员函数输出它们的面积和体积。-");MyColumn myC = new MyColumn();myC.radius = 19;myC.height = 10;System.out.println("半径:" + myC.radius + ",高度:" + myC.height + ",面积:" + myC.getArea() + ",体积:" + myC.getVolume();/点类class MyPointprotected float x,y;public float getX() return x;public void setX(float x) this.x = x;public float getY() return y;public void setY(float y) this.y = y;/圆类class MyCircle extends MyPointprotected float radius;protected double area;public void setRadius(float radius) this.radius = radius;public float getRadius() return radius;public double getArea() area = Math.PI * radius * radius;return area;/圆柱类class MyColumn extends MyCircleprotected double volume;protected float height;public void setHeight(float height) this.height = height;public float getHeight() return height;public double getVolume() return super.getArea() * height;Overridepublic double getArea() / TODO Auto-generated method stubreturn super.getArea() * 2 + 2 * Math.PI * radius * height;/数学类class MyMathstatic public int Max(int a,int b,int c)a = a > b ? a : b;c = a > c ? a : c;return c;/员工class Employeeprotected String name;protected int workNumber;protected int salary;public void setName(String name) this.name = name;public void setWorkNumber(int workNumber) this.workNumber = workNumber;public void setSalary(int salary) this.salary = salary;public String getName() return name;public int getWorkNumber() return workNumber;public int getSalary() return salary;public String toString()return "姓名:" + name + ",工号:" + workNumber + ",工资:" + salary;/经理class Manager extends Employeeprivate int award;public String toString() return super.toString() + ",奖金:" + award;public void setAward(int award) this.award = award;public int getAward() return award;运行结果:五、实验结果及分析<分析你的算法为什么可以实现目的。总结一下这次实验的心得体会。>