zoukankan      html  css  js  c++  java
  • 面向对象的理解

    今天又看了一下张孝祥的视频,觉得老师讲的一些例子很有道理:

    面向对象一个很重要的思想:谁拥有数据,谁就对外提供操作这些数据的方法。

    案例1:老师在黑板上画圆

         对象分析:老师(Teacher)、黑板(BlackBoard)、圆(Circle)

         方法归属分析:画圆(Draw)这个方法是属于圆的,根据上面红色字说到的面向对象思想,画圆是要调用圆的属性包括坐标x、y和半径R,圆拥有了这些数据,自然画圆的方法也是由圆提供的。

            

    案例2:列车司机刹车

         对象分析:司机(Driver)、列车(Train)

         方法归属分析:刹车(stop)这个方法是属于列车,司机只是起到发号示令的作用。

    案例3:售货员统计售货小票上的总金额

         对象分析:售货员(Seller)、小票(Ticket)

         方法归属分析:统计总金额(getTotalMoney)这个方法是属于小票对象的,因为统计总金额需要将小票上的数据加起来,这些数据是属于小票的,所以操作这些数据方法也应该属于小票。

    案例4:一颗小球从绳子的一端滚到另一端

         对象分析:小球(Ball)、绳子(Rope)

         对象联系:小球为绳子的滚动提供了指引的方向

         class Rope

         {

                 private Point start;

                 private Point end;

                 public Rope(Point start,Point end)

                 {

                        this.start  = start;

                        this.end = end;

                  }

                 

                 public Point nextPoint(Point currentPoint)

                 {

                       //利用两点直线的公式

                 }

          }

          

           class Ball

           {

                  private Rope  rope;

                  private Point  currentPoint;

                 

                  public Ball(Rope rope,Point currentPoint)

                  {

                        this.rope = rope;

                        this.currentPoint = currentPoint;

                   } 

                  public Point move()

                  {

                        this.currentPoint = rope.nextPoint(this.currentPoint);

                        System.out.println("小球移动到了点" + this.currentPoint);

                   }

           }

    案例5:两块石头磨成一把石刀,石刀可以砍树,树做成木材,木材做成椅子

         对象分析:石头(Stone)、石刀(StoneKnife)、树(Tree)、木材(Wood)、椅子(Chair)

         StoneKnife StoneKnifeFactory.create(Stone),石刀加工厂将石头加工成石刀。

         Wood StoneKnife.cut(Tree),石刀将树做成木材。

         Chair  ChairFactory.create(Wood),在椅子加工厂将木材做成椅子

  • 相关阅读:
    EasyPlayer iOS开源流媒体播放器中AAC解码PCM问题
    EasyPlayer iOS开源流媒体播放器中AAC解码PCM问题
    AAC包增加ADTS头Without MediaCodec
    AAC包增加ADTS头Without MediaCodec
    嵌入式流媒体音视频服务器EasyIPCamera中live555发送性能优化点
    嵌入式流媒体音视频服务器EasyIPCamera中live555发送性能优化点
    EasyDarwin开源流媒体服务器性能优化之Work-stealing优化方案
    EasyDarwin开源流媒体服务器性能优化之Work-stealing优化方案
    Visual Studio解决方案vs2005/vs2008/vs2010/vs2012/vs2013/vs2015版本互相转换工具
    Visual Studio解决方案vs2005/vs2008/vs2010/vs2012/vs2013/vs2015版本互相转换工具
  • 原文地址:https://www.cnblogs.com/vinplezhang/p/5379496.html
Copyright © 2011-2022 走看看