JSD-2204-面向对象-潜艇游戏--Day07

1.对象or类

1.1什么是类?什么是对象?

  • 现实生活是由很多很多对象组成的,基于对象抽出了类
  • 对象:软件中真实存在的单个个体/东西
  • 类:类型/类别,代表一类个体
  • 类是对象的模板,对象是类的具体的实例
  • 类中可以包含:
    • 对象的属性/特征-----------------------------成员变量
    • 对象的行为/动作/功能---------------------方法
  •  一个类可以创建多个对象

1.2如何创建类?如何创建对象?如何访问成员?

   //创建类:
   public class Student {
       //成员变量
       String name;
       int age;
       String address;
       //方法
       void study(){
           System.out.println(name+"在学习...");
       }
       void sayHi(){
           System.out.println("大家好,我叫"+name+",今年"+age+"岁了,家住"+address);
       }
   }
   
   //创建对象:
   public class StudentTest {
       public static void main(String[] args) {
           //创建一个学生对象
           Student zs = new Student();
           //访问成员变量
           zs.name = "zhangsan";
           zs.age = 25;
           zs.address = "河北廊坊";
           //调用方法
           zs.study();
           zs.sayHi();
   
           Student ls = new Student();
           ls.name = "lisi";
           ls.age = 27;
           ls.address = "黑龙江佳木斯";
           ls.study();
           ls.sayHi();
   
           //1)创建了一个学生对象
           //2)给所有成员变量赋默认值
           Student ww = new Student();
           ww.study();
           ww.sayHi();
       }
   }

1.3方法的签名:

方法名+参数列表

1.4方法的重载

方法的重载(overload/overloading):-------------------更方便方法的调用

  • 发生在同一类中,方法名相同,参数列表不同
  • 编译器在编译时会根据方法的签名自动绑定方法
   //演示方法的重载
   class Aoo{
       void show(){}
       void show(String name){}
       void show(int age){}
       void show(String name,int age){}
       void show(int age,String name){}
       //int show(){ return 1; } //编译错误,重载与返回值类型无关
       //void show(String address){} //编译错误,重载与参数名称无关
   }
   
   //演示重载方法的调用
   public class OverloadDemo {
       public static void main(String[] args) {
           Aoo o = new Aoo();
           o.show();
           o.show("zhangsan");
           o.show(25);
           o.show("zhangsan",25);
           o.show(25,"zhangsan");
       }
   }

2.潜艇游戏需求:

  • 所参与的角色:战舰、深水炸弹、侦察潜艇、鱼雷潜艇、水雷潜艇、水雷
  • 角色的关系
    • 战舰发射深水炸弹
    • 深水炸弹可以打潜艇(侦察潜艇、鱼雷潜艇、水雷潜艇),若打中:
      • 潜艇消失、深水炸弹消失
      • 打掉侦察潜艇,玩家得10分
      • 打掉鱼雷潜艇,玩家得40分
      • 打掉水雷潜艇,战舰得1条命
    • 水雷潜艇发射水雷
    • 水雷可以打战舰,若打中:
      • 水雷消失
      • 战舰减1条命(命数为0时游戏结束)

2.1创建了6个类,创建World类并测试

2.1.1整体结构

2.1.2Battleship类

package src.cn.tedu;
//战舰
public class Battleship {
    int width;          //宽
    int height;         //高
    int x;              //X 坐标
    int y;              //Y 坐标
    int speed;          //移动速度
    int life;           //命
    /**  移动*/
    void move(){
        System.out.println("战舰移动啦!");
    }

}

2.1.3Bomb类

package src.cn.tedu;
//炸弹
public class Bomb {
    int width;
    int height;
    int x;
    int y;
    int speed;

    void move(){
        System.out.println("炸弹移动");
    }
}

2.1.4Mine类

package src.cn.tedu;
//水雷
public class Mine {
    int width;
    int height;
    int x;
    int y;
    int speed;

    void move(){
        System.out.println("水雷移动");
    }
}

2.1.5MineSubMarine类

package src.cn.tedu;
//水雷潜艇
public class MineSubmarine {
    int width;
    int height;
    int x;
    int y;
    int speed;

    void move(){
        System.out.println("水雷潜艇移动啦!");
    }
}

2.1.6ObserverSubMarine类

package src.cn.tedu;
//侦查潜艇
public class ObserveSubmarine {
    int width;
    int height;
    int x;
    int y;
    int speed;

    void move(){
        System.out.println("侦查潜艇移动啦!");
    }
}

2.1.7TorpedoSubmarine类

package src.cn.tedu;
//鱼雷潜艇
public class TorpedoSubmarine {
    int width;
    int height;
    int x;
    int y;
    int speed;

    void move(){
        System.out.println("鱼雷潜艇移动啦!");
    }
}

2.1.8World(测试类) 

package src.cn.tedu;

/** 整个游戏世界 */
public class World {
    public static void main(String[] args) {
        Battleship s= new Battleship();
        s.width=50;
        s.height=20;
        s.x=100;
        s.y=200;
        s.speed=20;
        s.life=5;
        System.out.println(s.width+","+s.height+","+s.x+","+s.y+","+s.speed+","+s.life);
        s.move();


        ObserveSubmarine os1=new ObserveSubmarine();
        os1.width=60;
        os1.height=20;
        os1.x=70;
        os1.y=60;
        os1.speed=60;
        System.out.println(os1.width+","+os1.height+","+os1.x+","+os1.y+","+os1.speed);
        os1.move();


        ObserveSubmarine os2=new ObserveSubmarine();
        os2.width=1;
        os2.height=2;
        os2.x=10;
        os2.y=20;
        os2.speed=50;
        System.out.println(os2.width+","+os2.height+","+os2.x+","+os2.y+","+os2.speed);
        os2.move();


        TorpedoSubmarine ts1=new TorpedoSubmarine();
        ts1.width=30;
        ts1.height=20;
        ts1.x=30;
        ts1.y=40;
        ts1.speed=6;
        System.out.println(ts1.width+","+ts1.height+","+ts1.x+","+ts1.y+","+ts1.speed);
        ts1.move();


        TorpedoSubmarine ts2=new TorpedoSubmarine();
        ts2.width=30;
        ts2.height=30;
        ts2.x=10;
        ts2.y=30;
        ts2.speed=50;
        System.out.println(ts2.width+","+ts2.height+","+ts2.x+","+ts2.y+","+ts2.speed);
        ts2.move();


        MineSubmarine ms1=new MineSubmarine();
        ms1.width=20;
        ms1.height=20;
        ms1.x=30;
        ms1.y=10;
        ms1.speed=20;
        System.out.println(ms1.width+","+ms1.height+","+ms1.x+","+ms1.y+","+ms1.speed);
        ms1.move();


        MineSubmarine ms2=new MineSubmarine();
        ms2.width=20;
        ms2.height=20;
        ms2.x=10;
        ms2.y=10;
        ms2.speed=30;
        System.out.println(ms2.width+","+ms2.height+","+ms2.x+","+ms2.y+","+ms2.speed);
        ms2.move();


        Mine m1 =new Mine();
        m1.width=20;
        m1.height=20;
        m1.x=10;
        m1.y=10;
        m1.speed=30;
        System.out.println(m1.width+","+m1.height+","+m1.x+","+m1.y+","+os1.speed);
        m1.move();


        Mine m2 =new Mine();
        m2.width=20;
        m2.height=20;
        m2.x=10;
        m2.y=10;
        m2.speed=30;
        System.out.println( m1.width+","+ m1.height+","+ m1.x+","+ m1.y+","+ m1.speed);
        m2.move();


        Bomb z1=new Bomb();
        z1.width=20;
        z1.height=20;
        z1.x=10;
        z1.y=10;
        z1.speed=30;
        System.out.println( z1.width+","+ z1.height+","+ z1.x+","+ z1.y+","+ z1.speed);
        z1.move();


        Bomb z2=new Bomb();
        z2.width=20;
        z2.height=20;
        z2.x=10;
        z2.y=10;
        z2.speed=30;
        System.out.println( z2.width+","+ z2.height+","+ z2.x+","+ z2.y+","+ z2.speed);
        z2.move();
    }
}

3.补充

3.1OO,OOA,OOD,OOP

  • OO:面向对象
  •  OOA:面向对象分析
  • OOD:面向对象设计
  • OOP:面向对象编程------------------你们所参与的

3.2高质量代码

复用性好、扩展性好、维护性好、可移植性好、健壮性好、可读性好、效率好......

3.3 类是一种引用数据类型

   //            引用
   // 数据类型 引用类型变量  指向      对象
      Student     zs       =   new Student();

3.4默认值:

   byte,short,int,long,char-----------------0
   float,double-----------------------------0.0
   boolean----------------------------------false
   引用类型----------------------------------null

3.5明日单词

   1)this:这个
   2)Pointer:指针
   3)random:随机

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值