编程前提:
(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());
}
}
总的来说,这几道题目主要考察了面向对象的一些基础知识,方法的定义和调用,访问修饰符的使用,仅供初学还未入门者学习参考。