java面向抽象编程,可以让程序员专注于程序的逻辑结构设计

/*
 *建立的抽象类,把这个抽象类交给别人,别人的类需要继承该抽象类
*求得一个立体的底面积,但是我们可以不用管别人是怎么这个底面积的。
 */
package com.pan.e1;

/**
 *
 * 作者:属于雨灵的夜
 */
public abstract class Gemetry {
    public abstract double getArea();
}
  • 因为我们希望代码能实现各种类型的体积,所以我们把需要经常变化的底面积作为抽象类,让它作为它的子类的上转类型。
/*
*面向抽像类,设计主体功能
*Gemetry类和Volume类就是我们自己实现的,目的是为了计算体积。
 */
package com.pan.e1;

/**
 *
 * 作者:属于雨灵的夜
 */
public class Volume {
    Gemetry botton;
    double height;

    public Volume(Gemetry botton , double height){
        this.botton=botton;
        this.height=height;
    }

    void changeBotton(Gemetry botton){
        this.botton=botton;
    }

    public double getVolume(){
        return botton.getArea()*height;
    }
}
  • 求体积的类,但在这个类里我们并没有把要求的物体形状写死,而是通过抽象类来实现底面的计算,这样各种不同子类继承抽象类从而实现多种形状的
  • 体积的计算。让我们的代码更加健壮强大。
/*
 * 乙为我们实现求三角形的面积,因为底面是个四边形,所以我们求得的是棱柱体的体积
 */
package com.pan.e1;

/**
 *
 * 作者:属于雨灵的夜
 */
public class Lader extends Gemetry {
    double a,b,h;
    public Lader(double a,double b,double h){
        this.a=a;
        this.b=b;
        this.h=h;
    }

    public double getArea(){
        return(0.5*(a+b)*h);
    }
}
  •   一个求底面为梯形的子类
/*
 *甲为我们实现求圆的面积,因为底面是个圆,所以求是求的圆柱体积
 */
package com.pan.e1;

/**
 *
 * 作者:属于雨灵的夜
 */
public class Circle extends Gemetry {
    private double r;
    public Circle(double r){
        this.r=r;
    }
  public double getArea(){
      return (3.14*r*r);
  }
}
  •   一个底面为圆的子类。
/*
 *测试我们写的两个类:Gemetry和Volume
*现在如果别人帮我们实现圆柱体的底面积,我们就可以计算圆柱体的体积了。
 */
package com.pan.e1;

/**
 *
 * 作者;属于雨灵的夜
 */
public class Main {
    public static void main(String[] args){
        Volume v1;
        Gemetry g;

       g=new Lader(2,2,10);
       System.out.println("梯形的面积"+g.getArea());
       v1=new Volume(g,58);
       System.out.println("梯形底的柱体的体积"+v1.getVolume());

        g=new Circle(2.0);
        System.out.println("圆的面积"+g.getArea());
        v1=new Volume(g,4.0);
        System.out.println("圆柱体的体积"+v1.getVolume());
    }
}
  •  代码测试类

通过编写不同的类继承Gemetry抽象类,我们就可以实现不通的形状的立体的体积,而我们之前的代码不需要任何的变动。

通过利用上转类型,我们可以面向抽象来编程,可以在前期专注于程序的逻辑设计,然后到后面再用子类继承抽象类或者接口来

  实现具体的功能,或者子类的编写可以交给别人来写,达到并行开发软件的效果,从而提高软件的开发速度,也许这就是团队开发软件时采取的方法吧。

  这就是面向对象编程!!!  

时间: 2024-10-14 17:02:24

java面向抽象编程,可以让程序员专注于程序的逻辑结构设计的相关文章

java面向抽象编程样例

import java.util.*; abstract class Geometry{    public abstract double getArea();    }  class Pillar{    Geometry bottom;    double height;    Pillar(Geometry bottom ,double height){        this.bottom=bottom;        this.height=height;            } 

java 面向抽象编程的思想

SIM.java public abstract class SIM { public abstract void setNumber(String n); public abstract String giveNumber(); public abstract String giveCorpName(); } MobileTelephone.java public class MobileTelephone { SIM card; public void useSIM(SIM card) {

java面向切面编程

面向切面在英文中的单词是Aspect Oriented Programming(AOP),在spring框架中叫aop,它是可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术.它是一种新的方法论,它是对传统OOP编程的一种补充. AOP技术是建立在Java语言的反射机制与动态代理机制之上的.请看下图 以上图是利用jdk动态代理为真实对象上的每个方法上加上日志功能.从这张图中可以看出,我们是面向真实对象上的方法编程,把方法切开,在执行方法之前做了日志功能.

五年java开发生涯中一次吐血的项目救火(程序员何苦难为程序员)

我现在就职于一家中型的互联网企业,去年年底入职的薪资和待遇都很不错,但是总结起来说的好听就是全村人的希望,说的不好听就是一个人几乎干了一个项目组的事.下面是我的一次项目救火经历(背锅经历).就是年后的一个合作公司上线了一个子业务系统,对接公司内部的单点系统.我收到该公司的技术咨询:项目启动后没有规律的突然无法登录了,重新启动后,登录一断时间后又无法重新登录,对方技术人员一头雾水不知道什么原因,后台日志没有任何错误信息.我临危受命,赶往该项目进行扑火工作,其实本来2天都可以解决的问题,让我花了5天

程序员生存定律--程序人生的出口

程序员的人生出口 很多人非常想知道自己的未来是什么样子的,迫切到一定程度甚至会找算命先生.如果并不是想得到一个精确结果,这事儿其实并没有想的那么难.程序员的人生看起来五花八门,可以是Windows系,可以是Android系,可以是iPhone系等等,但如果为之做点抽象,那就会发现人生出口的类别其实不多,接下来我们就结合例子来看看程序员的人生中最可能的几个出口.这些出口里有大部分人的未来景象. 1 成就超一流高手 袁峰先生是<Windows图形编程>一书的作者,也是一位纯粹的程序员.从袁峰先生公

漫谈程序员系列:程序员到底是什么角色

先讲个生活小插曲儿-- 瓦工 房客打电话给我,说卫生间漏水,把楼下的客厅都洇湿了,老先生找上门来了.这还了得,赶紧处理吧.我找了人拆掉了浴缸,砸掉了地板,买了东方雨虹的防水涂料,自己做了防水,闭水试验,剩下就是贴瓷砖了.贴砖是个技术活儿,很专业,我是程序员,虽然可以勉强刷个防水,可贴砖实在干不了.在 58 同城找了一通电话,因为卫生间面积太小,又是改造,有的瓦工不愿意干,有的开的价钱我不能接受,十来个电话过去后才终于找到一个师傅,愿意 400 块把这活儿拾掇了--这还是因为那两天下雨,没别的活儿

非科班程序员和科班程序员的差距到底在哪里?

作者:黄小斜 文章来源:微信公众号[程序员黄小斜] 作为一名典型的非科班程序员,我在学习和工作一段时间之后,发现了自己跟科班程序员还是有很多的的区别,不管是思维上还是做事风格,以及对待问题的解决方式,都感觉有些差强人意. 今天我就给大家梳梳理一下,科班成为相对于非科班程序员,他们的优势到底在哪里? 第一点那就是算法能力. 为什么要强调这一条呢,大公司总是喜欢考算法,平时有些项目也有可能用到算法,总之算法就是衡量一个程序员的一把利器,作为非科班程序员,大部分时间,学习算法都只能靠自己,作为计算机领

漫谈程序员系列:程序员的生活就这样吗

我当了快十年程序员了,终于老得可以来谈谈程序员的生活是什么样子了. 或许陈奕迅的<十年>中的一段歌词,可以表示很多程序员和软件开发之间的感情纠葛: " 十年之前 我不认识你 你不属于我 我们还是一样 陪在一个陌生人左右 走过渐渐熟悉的街头 十年之后 我们是朋友 还可以问候 只是那种温柔 再也找不到拥抱的理由 情人最后难免沦为朋友 怀抱既然不能逗留 何不在离开的时候 一边享受 一边泪流 " 这首歌的词作者是林夕,香港才子.林夕的歌词写得真不错,我还因为这个在 13 年时买了他

第1次作业:这是一个不想当程序员的未来程序员

前言:这是一个不想当程序员的未来程序员对于计算机专业的某某看法.... 1.结缘计算机 问题1.1:你为什么选择计算机专业?你认为你的条件如何?和这些博主比呢? 对于这个问题,其实计算机专业并不是我的第一志愿,而是第三志愿,我第一二志愿分别是会计和金融,不过现在看来其实我的兴趣也不在这几个方面,有句话说得好,三分靠高考,七分靠志愿.志愿填的好,将来烦恼会少很多.经过两年的学习,我发现当初我就不应该考虑就业前景而填报专业,而是应该结合自己的兴趣爱好来,即使这份兴趣爱好所对应的专业将来并不好找到工作