编程前提: (1)熟练掌握类、对象的概念以及对事物的抽象。 (2)熟练掌握成员、方法的概念以及构造方法的概念。 (3)熟练掌握封装性,多态性的概念 (4)理解面向对象的程序设计方法。
题目如下
(1)先创建一个Point类,然后定义Trianglele类。在Trianglele类中定义三个Point的实体来表示一个三角形的三个点,再定义一个方法setTri对这三个点进行初始化,然后定义两个方法求三角形的周长、面积。在main()中创建一个三角形对象,求给定三点的三角形的周长、面积。
对应代码
public class Point { private double x; private double y; public double getX() { return x; } public void setX(double x) { this.x = x; } public double getY() { return y; } public void setY(double y) { this.y = y; } public void setTri(double a, double b) { x=a; y=b; } } public class Trianglele { Point m1; Point m2; Point m3; public Point getM1() { return m1; } public void setM1(Point m1) { this.m1 = m1; } public Point getM2() { return m2; } public void setM2(Point m2) { this.m2 = m2; } public Point getM3() { return m3; } public void setM3(Point m3) { this.m3 = m3; } public static double GetL(Point m1,Point m2) { return Math.sqrt(Math.pow(m1.getX()-m2.getX(),2)+Math.pow(m1.getY()-m2.getY(),2)); } public static double GetC(Point m1,Point m2,Point m3) { return GetL(m1,m2)+GetL(m2,m3)+GetL(m1,m3); } public static double GetS(Point m1,Point m2,Point m3) { double p=GetL(m1,m2)+GetL(m2,m3)+GetL(m1,m3); return Math.sqrt(p*(p-GetL(m1,m2)*(p-GetL(m1,m3)*(p-GetL(m2,m3))))); } } public class Test { public static void main(String[] args) { Trianglele tri=new Trianglele(); Point m1=new Point(); Point m2=new Point(); Point m3=new Point(); m1.setTri(0, 0); m2.setTri(4, 3); m3.setTri(3, 4); tri.setM1(m1); tri.setM2(m2); tri.setM3(m3); System.out.println("该三角形周长为"+Trianglele.GetC(m1, m2, m3)); System.out.println("该三角形面积为"+Trianglele.GetS(m1,m2,m3)); } }第一题知识点:创建一个对象,在类中使用Get和Set方法对属性值操作,以及方法的定义和调用
(2) 将(1)题的方法setTri改用构造方法实现初始化。
public class Point { private double x; private double y; public double getX() { return x; } public void setX(double x) { this.x = x; } public double getY() { return y; } public void setY(double y) { this.y = y; } public Point(double x, double y) { super(); this.x = x; this.y = y; } } public class Trianglele { Point m1; Point m2; Point m3; public Point getM1() { return m1; } public void setM1(Point m1) { this.m1 = m1; } public Point getM2() { return m2; } public void setM2(Point m2) { this.m2 = m2; } public Point getM3() { return m3; } public void setM3(Point m3) { this.m3 = m3; } public double GetL(Point m1,Point m2) { return Math.sqrt(Math.pow(m1.getX()-m2.getX(),2)+Math.pow(m1.getY()-m2.getY(),2)); } public double GetC(Point m1,Point m2,Point m3) { return GetL(m1,m2)+GetL(m2,m3)+GetL(m1,m3); } public double GetS(Point m1,Point m2,Point m3) { double p=GetL(m1,m2)+GetL(m2,m3)+GetL(m1,m3); return Math.sqrt(p*(p-GetL(m1,m2)*(p-GetL(m1,m3)*(p-GetL(m2,m3))))); } } public class Test { public static void main(String[] args) { Trianglele tri=new Trianglele(); Point m1=new Point(0,0); Point m2=new Point(3,4); Point m3=new Point(4,3); tri.setM1(m1); tri.setM2(m2); tri.setM3(m3); System.out.println("该三角形周长为"+tri.GetC(m1, m2, m3)); System.out.println("该三角形面积为"+tri.GetS(m1,m2,m3)); } }第二题与第一题相差不多,与第一题不同的是使用构造方法对对象初始化
(3)编写JAVA程序创建圆柱体类,具有求表面积和体积的功能。已知给定一个圆柱体,底面圆心p为(0,0),半径r为10,圆柱体高5,求此圆柱体的表面积和体积。
public class Cylinder { static double PI=3.14; private double r; private double h; public Cylinder(double r,double h) { this.r=r; this.h=h; } public double GetSa() { return 2*PI*r*(h+r); } public double GetV() { return PI*r*r*h; } } public class Test { public static void main(String[] args) { Cylinder cy=new Cylinder(10,5); System.out.println("该圆柱体表面积为"+cy.GetSa()); System.out.println("该圆柱体体积为"+cy.GetV()); } }第三题与前两题知识点相同
(4)试声明一个类,类名为student,属性如下: 学号(no):1001 姓名(name):张小林 性别(sex):男 年龄(age):24 行为如下: 上课(HaveClass):返回值为true表示上课;返回值为false表示没上课。 睡觉(Sleep):返回值为true表示在睡觉,返回值为false表示没睡觉。 声明该类的对象(stu),并输出该对象的属性和行为的值。 运行结果为: 学号:1001 姓名:张小林 性别:男 年龄:24 sleep()=true HaveClass()=false
public class Student { private int no = 1001; private String name = "张小林"; private String sex = "男"; private int age = 24; public boolean HaveClass() { return false; } public boolean Sleep() { return true; } public static void main(String[] args) { // TODO Auto-generated method stub Student Stu = new Student(); System.out.println("学号:" + Stu.no); System.out.println("姓名:" + Stu.name); System.out.println("性别:" + Stu.sex); System.out.println("年龄:" + Stu.age); System.out.println("sleep()=" + Stu.Sleep()); System.out.println("HaveClass=" + Stu.HaveClass()); } }(5)定义一个表示学生信息的类Student,要求如下: a.类Student的成员变量: sNO 表示学号;sName表示姓名;sSex表示性别;sAge表示年龄;sJava:表示Java课程成绩。 b.类Student带参数的构造方法: 在构造方法中通过形参完成对成员变量的赋值操作。 c.类Student的方法成员: getNo():获得学号; getName():获得姓名; getSex():获得性别; getAge()获得年龄; getJava():获得Java 课程成绩 根据类Student的定义,创建五个该类的对象,输出每个学生的信息,计算并输出这五个学生Java语言成绩的平均值,以及计算并输出他们Java语言成绩的最大值和最小值。
public class Student { private int sNO; private String sName; private String sSex; private int sAge; private double sJava; public Student(int sNO, String sName, String sSex, int sAge, double sJava) { super(); this.sNO = sNO; this.sName = sName; this.sSex = sSex; this.sAge = sAge; this.sJava = sJava; } public int getNO() { return sNO; } public String getName() { return sName; } public String getSex() { return sSex; } public int getAge() { return sAge; } public double getJava() { return sJava; } public double GetAvg(Student [] students){ double sum=0; for(int i=0;i<students.length;i++) { sum=sum+students[i].getJava(); } return sum/students.length; } public double GetMax(Student [] students){ double f=-1; for(int i=0;i< students.length;i++) { if(students[i].getJava()>f) { f=students[i].getJava(); } } return f; } public double GetMin(Student [] students){ double F=100; for(int i=0;i< students.length;i++) { if(students[i].getJava()<F) { F=students[i].getJava(); } } return F; } } public class Test { public static void main(String[] args) { Student [] stu =new Student[5]; Student stu1=new Student(01,"小明","男",18,89); Student stu2=new Student(02,"小虎","男",19,87); Student stu3=new Student(03,"小红","女",18,94); Student stu4=new Student(04,"李华","女",19,91); Student stu5=new Student(05,"小强","男",20,83); stu[0]=stu1; stu[1]=stu2; stu[2]=stu3; stu[3]=stu4; stu[4]=stu5; System.out.println("这五位学生Java语言成绩为:"+stu1.GetAvg(stu)); System.out.println("这五位学生中Java语言成绩的最大值为:"+stu1.GetMax(stu)); System.out.println("这五位学生中Java语言成绩的最小值为:"+stu1.GetMin(stu)); } }(6)定义一个“圆”类Circle,该圆类的数据成员包括:圆心点位置及圆的半径;方法成员有:设置圆心位置和半径的方法,获取圆心位置和半径的方法及构造方法。要求构造方法可以接收圆心位置参数,而半径使用缺省值1。编写完整的程序并创建Circle类的对象,并且分别调用各种方法,对比这些方法的执行结果。
public class Circle { private double x; private double y; private double r = 1; public double getX() { return x; } public void setX(double x) { this.x = x; } public double getY() { return y; } public void setY(double y) { this.y = y; } public double getR() { return r; } public void setR(double r) { this.r = r; } public Circle(double x, double y) { super(); this.x = x; this.y = y; } } public class Test { public static void main(String[] args) { Circle cir=new Circle(4,3); System.out.println("使用构造方法初始化该圆圆心坐标及半径"); System.out.println("该圆的半径为:"+cir.getR()); System.out.println("该圆的圆心坐标为:("+cir.getX()+","+cir.getY()+")"); cir.setX(7); cir.setY(4); cir.setR(5); System.out.println("使用set方法给该圆圆心坐标及半径重新赋值"); System.out.println("该圆的半径为:"+cir.getR()); System.out.println("该圆的圆心坐标为:("+cir.getX()+","+cir.getY()+")"); } }(7)创建一个类,类名为StaticMethodTest,包含一个静态方法和一个实例方法,在main方法中分别调用这个两个方法进行测试。
public class StaticMethodTest { static int a=100; static int b=13; public static int sta(){ return a+b; } public int Fsta(){ return a-b; } public static void main(String[] args) { System.out.println("静态方法输出:"+StaticMethodTest.sta()); StaticMethodTest STA=new StaticMethodTest(); System.out.println("实例方法输出:"+STA.Fsta()); } }(8)创建一个Person类,在该类中用不同的访问修饰符设立不同的person属性,再创建一个PersonTest类,包括main方法,在此类中分别访问Person类中各个属性。
public class Person { public String Name="李华"; protected String Sex="男"; String Num="001"; private int age=19; public int getAge() { return age; } } public class PersonTest { public static void main(String[] args) { Person person=new Person(); System.out.println("该对象姓名:"+person.Name); System.out.println("性别:"+person.Sex); System.out.println("学号:"+person.Num); System.out.println("年龄:"+person.getAge()); } }总的来说,这几道题目主要考察了面向对象的一些基础知识,方法的定义和调用,访问修饰符的使用,仅供初学还未入门者学习参考。