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

时间: 2024-10-20 18:33:25

java 初学之面向对象设计 三角形,圆等设计的相关文章

Java初学笔记—面向对象

1.对象的理解. 它是客观存在的,实实在在的 ,有自己的属性和方法 类的理解. 它是大量对象的集合,是大量对象的共性抽象出来的 创建类.  成员变量(有默认值),成员方法 创建对象  ,引用对象 当实例变量和局部变量冲突时,局部变量优先 2.方法 认识普通方法和构造方法的不同,构造方法的重载 构造方法的特点:与类名相同,无返回类型: 自动被调用,无须手动调用:而且只能调用一次 分为构造代码快,无参构造,有参构造,默认空构造方法 3.程序中的值传递     this关键字 4.字符串连接Strin

黑马程序员【Java中的面向对象】

Java中的面向对象 在软件开发的学习中, 我最先接触的开发语言就是java,但都是简单的函数和循环数组的应用.说道面向对象,第一次看到这个词的时候还是在C#的学习过程中,我记得当时PPT上霸气的解释,什么是对象?万物皆对象!够霸气吧,当时的面向对象思想对我来说还是挺崩溃的,什么继承多态啊!经过了无数的联系项目的书写,终于对面向对象有了一定的理解,现在刚好在java的学习中再度重温面向对象,那么就将我眼中的面向对象写出来分享给大家. 说到面向对象,我们就不得不提一下他的三大特性,继承封装和多态.

Java Web入门项目之“网络交友”的设计与实现

前言:这个小项目是我刚学习JSP时,参考"JSP程序设计"这本书写的.这里之所以说参考这本书而不是照着这本书写,主要是因为我自己完成的时候删掉了不少繁琐的写法(比如:文件上传):同时对书中容易产生SQL注入漏洞,XSS跨站脚本漏洞等地方的写法进行了修改过滤:登录页面加上了随机验证码.除此之外,还添加了文件管理功能 PS:整个项目没有特别的难点,可以分为一个个功能点实现,大神轻喷,个人认为对初学Java Web的童鞋还是有参考意义的 注:整个项目的完整源代码和sql文件我会在文末给出下载

Java 入门基础——面向对象的特征

计算机软件系统是现实生活中的业务在计算机中的映射,而现实生活中的业务其实就是一个个对象协作的过程.面向对象编程就是按现实业务一样的方式将程序代码按一个个对象进行组织和编写,让计算机系统能够识别和理解用对象方式组织和编写的程序代码,这样就可以把现实生活中的业务对象映射到计算机系统中. 面向对象的编程语言有封装.继承 .抽象.多态等4个主要的特征. 封装: 封装是保证软件部件具有优良的模块性的基础,封装的目标就是要实现软件部件的"高内聚.低耦合",防止程序相互依赖性而带来的变动影响.在面向

Java学习日记------面向对象②

2018-03-01 1.创建Java类并实例化 package day02; /* * 面向对象思想的落地法则一: * 1.设计类,并设计类的成员(成员变量和·成员方法) * 2.通过类,来创造类的对象(也成为类的实例化) * 3.通过"对象.属性"或"对象.方法"来调用. */ public class zoo { public static void main(String[] args) { //基本数据类型的声明:数据类型 变量名=初始化值 //int i

第二十五节:Java语言基础-面向对象基础

面向对象 面向过程的代表主要是C语言,面向对象是相对面向过程而言,Java是面向对象的编程语言,面向过程是通过函数体现,面向过程主要是功能行为. 而对于面向对象而言,将功能封装到对象,所以面向对象是基于面向过程的.以前是主要以面向过程为思想,现在是将功能装进对象中,如果要用到功能时,就调用该对象即可. 面向对象是入门思想的进步,适用于人类的思考,将复杂的东西进行了简单化,将我们程序员从执行者变化成指挥者.由以前面向功能(面向过程)转变为面向对象(封装的功能). **** 面向对象设计思想 设计思

Java基础和面向对象

Java基础和面向对象 一.数据类型和运算符 标识符 组成:字母.数字.下划线.$ 首字母:不能是数字 见名知义 不能是关键字(48个) 正确的:name.name123.age._name.$name 错误的:1name.public.123.na%me 标识符主要给一个元素起名字,需要符合起名字的以上4种规则.比如说,类的名字:首字母大写:变量名称:小写:方法名称:驼峰命名:数组名称.接口名称.集合名称. //你定义为汉字也可以,不过不推荐,因为国际语言以English为主.为了面向世界,使

学java教程之面向对象(四)

学编程吧学java教程之面向对象(四)发布了,欢迎通过xuebiancheng8.com来访问 本次课来分析java面向对象之构造方法.什么是构造方法呢,构造方法听名字顾名思义,构造的时候执行的方法就叫构造方法. 没错,构造方法就是在构造对象的时候执行的方法,就是构造方法,那什么时候构造对象呢,是不是在new的时候调用构造对象呢,所以构造方法就是在new对象的时候执行的方法就是构造方法.构造方法一般用来为对象赋初值.完成对象的初始化. 下面我们来看如何定义构造方法. public class P

Java编程基础-面向对象(中)

本章承接Java编程基础-面向对象(上)一文. 一.static关键字 在java中,定义了一个static关键字,它用于修饰类的成员,如成员变量.成员方法以及代码块等,被static修饰的成员具备一些特性. 1.static关键字的特点: a)随着类的加载而加载,也就是说,静态会随着类的消失而消失,说明它的生命周期最长. b)优先于对象存在,明确一点,静态是先存在的,对象是后存在的. c)被类的所有对象共享. d)可以通过类名调用. 2.静态变量 在一个java类中,可以使用static关键字