java 初学之面向对象设计 三角形,圆等设计

java

首先要对面向对象有一定了解,下面利用继承与派生的方式来演示java的面向对象过程;

创建一个java工程,添加一个新的pakage:Shapec;

添加一个新类,写入代码

/*

* To change this template, choose Tools | Templates

* and open the template in the editor.

*/

 

package Shapec;

/**

*

* @author Administrator

*/

//抽象类,图形借口

public abstract class Shape {

public static double PI = Math.PI; //π=3.1415926

public abstract double GetArea(); //计算面积

public abstract double GetLong();//计算周长

}

第二部,继承与派生,

新建5个新的类,分别命名为:J_Circle, J_FiveS ,J_Ponit,J_Triangle,J_Rectangle

其中 J_Ponit 为坐标点类。下面给出各个代码:

/*

* To change this template, choose Tools | Templates

* and open the template in the editor.

*/

package Shapec;

/**

*

* @author Administrator

*/

public class J_Circle extends Shape {

public double m_r;

public double m_x , m_y;

public J_Circle(double r)

{

m_x = m_y = 0;

m_r = r;

}

public J_Circle(double m_r, double m_x, double m_y) {

this.m_r = m_r;

this.m_x = m_x;

this.m_y = m_y;

}

public J_Circle(J_Ponit p,double r){

m_x = p.m_x;

m_y = p.m_y;

m_r = r;

}

// 计算面积

public double GetArea() {

return (Shape.PI * m_r * m_r);

}

// 计算周长

public double GetLong() {

return (2 * PI * m_r);

}

@Override

public String toString() {

return("圆\n"+"面积为:" + GetArea() + ";\n周长为:"+ GetLong());

}

}

/*

* To change this template, choose Tools | Templates

* and open the template in the editor.

*/

package Shapec;

/**

*

* @author Administrator

*/

public class J_FiveS extends Shape {

private double E;

public double m_a;

public J_Ponit a;

public J_Ponit b;

public J_Ponit c;

public J_Ponit d;

public J_Ponit e;

public J_FiveS( J_Ponit a, J_Ponit b, J_Ponit c, J_Ponit d, J_Ponit e) {

this.E = 1.72;

this.m_a = J_Ponit.GetLongC(a, b);

this.a = a;

this.b = b;

this.c = c;

this.d = d;

this.e = e;

}

// 五边形一个点坐标和图形中心的坐标

public J_FiveS(J_Ponit a, J_Ponit o){

this.E = 1.72;

double t = J_Ponit.GetLongC(a, o);

m_a = Math.sqrt(2 * t * t * (1 - Math.cos(72 *( Math.PI / 180))));

}

public J_FiveS(double a) {

this.E = 1.72;

this.m_a = a;

}

@Override

public double GetArea() {

return E*m_a*m_a;

}

@Override

public double GetLong() {

return 5*m_a;

}

@Override

public String toString() {

return("五边形 \n"+"面积为:" + GetArea() + ";\n周长为:"+ GetLong());

}

}

/*

* To change this template, choose Tools | Templates

* and open the template in the editor.

*/

package Shapec;

/**

*

* @author Administrator

*/

public class J_Ponit {

public double m_x;

public double m_y;

public J_Ponit(double m_x, double m_y) {

this.m_x = m_x;

this.m_y = m_y;

}

public J_Ponit() {

m_x = 0;

m_y = 0;

}

public J_Ponit(J_Ponit p) {

m_x = p.m_x;

m_y = p.m_y;

}

public void SetX(double x){

m_x = x;

}

public void SetY(double y){

m_y = y;

}

public static double GetLongC(J_Ponit left,J_Ponit right){

return Math.sqrt(Math.pow((left.m_x - right.m_x),2) + Math.pow((left.m_y - right.m_y), 2));

}

@Override

public String toString() {

return ("x="+m_x+",y="+m_y);

}

}

J_Ponit

 

/*

* To change this template, choose Tools | Templates

* and open the template in the editor.

*/

package Shapec;

/**

*

* @author Administrator

*/

public class J_Triangle extends Shape{

public double m_a;

public double m_b;

public double m_c;

private double m_p;

public J_Ponit a,b,c;

private void Culatep(){

m_p = (m_a + m_b + m_c) / 2;

}

public J_Triangle( J_Ponit a, J_Ponit b, J_Ponit c) {

this.a = new J_Ponit(a);

this.b = new J_Ponit(b);

this.c = new J_Ponit(c);

double a1 = J_Ponit.GetLongC(b,c);

double b1 = J_Ponit.GetLongC(a,c);

double c1 = J_Ponit.GetLongC(a,b);

if((a1 + b1) > c1 && (a1 - b1) < c1){

m_a = a1;

m_b = b1;

m_c = c1;

}

else{

m_a = m_b = m_c = 0;

}

Culatep();

}

// 正三角型

public J_Triangle(double x) {

m_a = x;

m_b = x;

m_c = x;

Culatep();

}

// 等腰三角形

public J_Triangle(double a ,double x) {

if((a + x) >x && (a - x) < x){

m_a = a;

m_b = m_c = x;

}

else{

m_a = m_b = m_c = 0;

}

Culatep();

}

//普通三角形

public J_Triangle(double ma, double mb, double mc) {

if((ma - mb) < mc && (ma + mb) > mc){

this.m_a = ma;

this.m_b = mb;

this.m_c = mc;

}

else{

m_a = m_b = m_c = 0;

}

Culatep();

}

@Override

public double GetArea() {

return Math.sqrt(m_p*(m_p - m_a)*(m_p - m_b)*(m_p - m_c));

}

@Override

public double GetLong() {

return (m_a + m_b + m_c);

}

@Override

public String toString() {

return("三角形 \n"+"面积为:" + GetArea() + ";\n周长为:"+ GetLong());

}

}

/*

* To change this template, choose Tools | Templates

* and open the template in the editor.

*/

package Shapec;

/**

*

* @author Administrator

*/

public class J_Rectangle extends Shape {

//矩形四个顶点

public J_Ponit a,b,c,d;

double m_a;

double m_b;

public J_Rectangle(J_Ponit a, J_Ponit b, J_Ponit c, J_Ponit d) {

this.a = new J_Ponit(a);

this.b = new J_Ponit(b);

this.c = new J_Ponit(c);

this.d = new J_Ponit(d);

m_a = J_Ponit.GetLongC(a, b);

m_b = J_Ponit.GetLongC(a, d);

}

public J_Rectangle(double a, double b) {

m_a = a;

m_b = b;

}

// 获得边长

public double GetSide_one(){

return m_a;

}

public double GetSide_two(){

return m_b;

}

//计算面积

@Override

public double GetArea() {

return (m_a * m_b);

}

//计算周长

@Override

public double GetLong() {

return (2 * m_a + 2 * m_b);

}

@Override

public String toString() {

return("矩形 \n"+"面积为:" + GetArea() + ";\n周长为:"+ GetLong());

}

}

J_Rectangle

最后在mian中调用;

/*

* To change this template, choose Tools | Templates

* and open the template in the editor.

*/

package shapecu;

import Shapec.J_Rectangle;

import Shapec.J_Ponit;

import Shapec.J_Triangle;

import Shapec.J_Circle;

import Shapec.Shape;

import Shapec.J_FiveS;

/**

*

* @author Administrator

*/

public class Main {

/**

* @param args the command line arguments

*/

public static void main(String[] args) {

// TODO code application logic here

Shape shape[] = new Shape[4];

// 矩形坐标

J_Ponit b = new J_Ponit(1, 0);

J_Ponit c = new J_Ponit(1, 1);

J_Ponit d = new J_Ponit(0, 1);

J_Ponit a = new J_Ponit(0, 0);

shape[0] = new J_Rectangle(a, b, c, d);

//三角形坐标

J_Ponit a1 = new J_Ponit(0, 0);

J_Ponit b1 = new J_Ponit(0, 4);

J_Ponit c1 = new J_Ponit(3, 0);

shape[1] = new J_Triangle(a1, b1, c1);

// 圆坐标和半径

J_Ponit o = new J_Ponit(0, 0);

shape[2] = new J_Circle(o, 3);

// 五边形,定义边长为3;

shape[3] = new J_FiveS(3);

// 输出:

System.out.println(shape[0]);

System.out.println(shape[1]);

System.out.println(shape[2]);

System.out.println(shape[3]);

}

}

main

 

以上是 java 初学之面向对象设计 三角形,圆等设计 的全部内容, 来源链接: utcz.com/z/392473.html

回到顶部