zoukankan      html  css  js  c++  java
  • Face_to_object_design

    二、实例
    掷骰子游戏:三粒骰子,掷两次,比较两次的结果。
    1.提炼
    提炼对象:三粒骰子、游戏
    提炼对象的属性和功能:掷骰子、比较点数
    骰子:
    属性:点数
    功能:随机获取一个1~6之间的整数值。
    游戏:
    属性:三粒骰子
    功能:掷骰子(三粒)、比较点数
    2.描述对象
    骰子类
    3.创建对象
    类名 对象变量名;
    对象变量名=new 类名();//调用构造方法初始化
    4.调用对象
    属性:对象名.属性名
    方法:对象名.方法名(参数列表)
    三、类的声明与定义
    类是对某一类事物的抽象描述。用类创建对象。抓住“属性”、“功能”。
    类是Java程序的基本元素。一个Java程序由若干个类构成。类是Java中重要的一种”数据类型“,类声明
    的变量称为对象。
    格式:
    import java.util.Random;
    //骰子类
    public class SaiZ {
    int value;//点数
    Random rnd=new Random();
    //随机得到一个点数
    public int getValue(){
    value=rnd.nextInt(6)+1;
    return value;
    }
    }
    public class Game {
    SaiZ saiZ[]=new SaiZ[3];
    public Game(){
    for(int i=0;i<saiZ.length;i++)
    saiZ[i]=new SaiZ();
    }
    public int f(){
    int s=0;
    for(int i=0;i<saiZ.length;i++)
    s=s+saiZ[i].getValue();
    return s;
    }
    public boolean compare(int n1,int n2){
    if(n1>=n2)
    return true;
    else
    return false;
    }
    }
    访问控制符:public、private、default、protected
    class:关键字,用来定义类
    类名:自定义、符合Java标识符规则、驼峰命名法(类名,多个单词组成,每个单词首字母大写;
    变量和方法,首字母小写,其余单词首字母大写;常量所有字母大写)、见名知意。
    类体:只能有成员变量和成员方法。
    成员变量:在类内部声明的变量,它隶属于该类的对象。
    成员变量的操作:只能在方法内部进行。
    四、对象的创建
    类是一种重要的数据类型。可以用来声明变量。它声明的变量称为对象。
    引用数据类型和基本数据类型不同,当用类声明对象后,还必须创建对象。即为声明的对象分配所拥有
    的变量(确定对象所具有的属性)。当使用一个类创建一个对象时,也称给出了这个类的一个实例。通
    俗地讲,
    类是创建对象的模板,没有类就没有对象。
    五、构造方法
    一个特殊的方法
    方法名称与类名完全相同。
    如果声明类时,没有显式声明构造方法,系统会自动创建一个默认参数为空的构造方法。如果声明
    了,则不再自动创建。
    构造方法没有返回值。一定不要写void
    构造方法必须使用new调用。不能通过“对象名.方法名()”调用
    构造方法也可以重载,提供多种创建对象的方法
    1.作用
    创建对象、实例化对象。为对象的成员变量分配内存空间,并初始化。
    2.构造方法的重载
    目的:为用户提供多种创建对象的方法。初始化对象的成员变量。(为它的成员变量赋初值)
    [访问控制符] class 类名{
    成员变量的声明;
    成员方法的声明(){}
    }
    public class Demo1 {
    String name;
    public void init(){
    name="张三丰";
    }
    }
    类名 对象名;//声明对象
    对象名=new 类名();//创建对象,为对象的成员变量分配内存
    六、对象的内存模型
    声明对象变量后,在没有使用new运算之前,该对象为空,称为空对象,不能使用。
    public class Demo1 {
    public static void main(String[] args) {
    Person p1=new Person();
    p1.printInfo();
    Person p2=new Person("张三丰");
    p2.printInfo();
    Person p3=new Person("张无忌","男");
    p3.printInfo();
    Person p4=new Person("赵敏","女",20);
    p4.printInfo();
    }
    }
    使用new运算调用类的构造方法后,则为对象的成员变量分配内存空间,并初始化(即赋初值)。
    一个类可以通过new运算创建多个不同的对象。这些对象的成员变量将被分配不同的内存空间
    new运算只能和构造方法一起使用
    七、对象的使用
    抽象类的目的,写一个类的目的是创建对象。类具有属性和行为,所以说,对象也具有属性和行为。对
    象不仅可以操作自己的变量改变自身的状态,还可以调用类的方法产生一定的行为。
    操作其本身的数据:对象名.属性名
    调用方法:对象名.方法名(参数列表)
    八、Java的程序结构
    一个Java程序由若干个类构成。但是Java程序至少要包含一个主类(包含main方法的类)。Java程序从
    主类的main方法开始执行。
    九、面向对象编程练习
    扑克牌游戏,ATM取款机,面向对象的程序设计思想,分析程序。该程序中有哪些对象,每个对象应该
    具有哪些属性和方法。只需要写出属性和方法的名称即可,并不需要实现。用我们语言描述即可。
    1.ATM取款机
    对象:银行卡、ATM取款机
    数据:银行卡号、银行卡密码、卡内余额、机内余额
    行为:查询余额、取款、存款、转帐、修改密码、显示欢迎信息、主菜单
    银行卡:
    属性:卡号、密码、余额
    行为:查询、取款、存款、转帐、验证
    ATM机:
    属性:银行卡、余额
    行为:显示欢迎信息、主菜单、验证用户身份、查询、取款、存款、转帐
    2.扑克牌
    对象:52张扑克牌(52个对象)、游戏
    扑克牌:
    属性:花色、大小、图像
    行为:输出面值(得到该扑克牌的图像)
    游戏:
    Exception in thread "main" java.lang.NullPointerException
    at demo1.Demo1.main(Demo1.java:14)
    空指针异常,产生的原因就是没有对对象变量使用new运算,也就是说没有调用其构造方法,初始化对
    象。
    属性:52个扑克牌对象
    行为:初始化每一个扑克牌对象(对它的花色、大小赋值)
    洗牌(打乱顺序)
    抽牌
    比较两张牌的大小
    public class MyCard {
    int color;
    int value;
    public MyCard(int color, int value) {
    this.color = color;
    this.value = value;
    }
    private String getValue(int n){
    if(n<=10){
    return n+"";
    }else if(n==11){
    return "J";
    }else if(n==12){
    return "Q";
    }else if(n==13){
    return "K";
    }else{
    return "A";
    }
    }
    public String getFaceValue(){
    switch (color){
    case 1:
    return "黑桃"+getValue(value);
    case 2:
    return "红桃"+getValue(value);
    case 3:
    return "梅花"+getValue(value);
    default:
    return "方块"+getValue(value);
    }
    }
    }
    public class MyGame {
    MyCard[] myCards=new MyCard[52];
    Random rnd=new Random();
    public void init(){
    int k=0;
    for(int i=1;i<=4;i++){
    for(int j=2;j<=14;j++){
    myCards[k++]=new MyCard(i,j);
    }
    }
    }
    微信公从号二维码
    public MyCard getCard(int n){
    return myCards[n];
    }
    public void xiPai(){
    for(int i=0;i<myCards.length;i++){
    int n=rnd.nextInt(52);
    MyCard temp=myCards[n];
    myCards[n]=myCards[i];
    myCards[i]=temp;
    }
    }
    public void printCards(){
    for(int i=0;i<myCards.length;i++){
    System.out.print(myCards[i].getFaceValue()+" ");
    if((i+1)%13==0)
    System.out.println();
    }
    }
    }
    public class StartGame {
    public static void main(String[] args) {
    MyGame myGame=new MyGame();
    myGame.init();
    myGame.printCards();
    System.out.println();
    myGame.xiPai();
    myGame.printCards();
    System.out.println("你抽到的牌是:"+myGame.getCard(10).getFaceValue());
    }
    }





    Autor:VincentAdamNemessis E-mail:vincent5519@yeah.net QQ:3377299629 Wechat:ZTXLoveC3344
  • 相关阅读:
    view 的继承关系
    dos 下小tip
    Required diagnostic data collection for RMAN backup
    数据库应用设计设计报告
    程序 从存储卡 内存卡 迁移到 SD卡
    c++ 参赛设置
    c++ 用构造函数
    Ip
    error C3872: “0x3000”: 此字符不允许在标识符中使用
    机器字长 32位与64位的区别
  • 原文地址:https://www.cnblogs.com/VincentAdam/p/1488a2491998c78c9ac1197dba328162.html
Copyright © 2011-2022 走看看