首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Coding
V2EX  ›  程序员

刚开始学对象编程,不知道怎么写,大家帮帮忙

  •  
  •   pinews · 222 天前 · 3949 次点击
    这是一个创建于 222 天前的主题,其中的信息可能已经有所发展或是发生改变。
    思路如下,
    有一对对象
    有男一人,女一人,
    男提出约会,女同意约会
    约会进行
    约会结束
    男金钱减 300,双方亲密度减 300

    怎么写啊,完全没头绪,苦恼
    第 1 条附言  ·  222 天前
    不是题不是钓鱼,想写个相亲网站,不用太具体的代码,就是大致思路。不知道改用程序怎么写。
    47 回复  |  直到 2019-05-06 09:42:55 +08:00
        1
    kljsandjb   222 天前 via Android
    牛逼的题
        2
    18k   222 天前 via iPhone
    面相对象的编程
    这里很多人是没有经验的
        3
    lhx2008   222 天前 via Android
    亲密度肯定要存到另外一个对象,要我做的话这是个二层 map ( table )。
    如果是一女不事二夫的话,同时加到男女的对象上也没问题。
        4
    pinews   222 天前
    @lhx2008 是这样的 假设 5 男 5 女,可以互相约会。
        5
    FelixZeng   222 天前
    建议你先找个对象,面向对象编程可能会好一点
        6
    salamanderMH   222 天前 via Android
    女方觉得不合适就算了
        7
    pinews   222 天前
    @FelixZeng 正在做相亲网站
        8
    lhx2008   222 天前 via Android
    @pinews Map<Person, Map<Person, Integer>>
        9
    pinews   222 天前
    @lhx2008 不太懂,如何存入数据库我还是知道的
        10
    Bigglesworth   222 天前
    怎么“男金钱减 300,双方亲密度减 300 ”,这不就是黄了嘛,哈哈哈。。。
        11
    cmqwan   222 天前
    @Bigglesworth 亲密度的初始值设定可以根据男方的资产而定,比如有一个亿,init 的时候,双方亲密度就是一百万。减个 300,毛毛雨
        12
    crazytree   222 天前
    先 new 一个对象
        13
    Bigglesworth   222 天前
    @cmqwan #11 不是那个初始值问题,我说男方约会花了 300,亲密度反而减 300 了。
        14
    nutting   222 天前
    这个亲密度到底怎么定义的,先让你产品经理说清楚吧。别的没什么难度吧
        15
    gransh   222 天前
    楼主是做作业还是钓鱼?
        16
    BingoXuan   222 天前
    如果是 python 的话,可以用上下文管理器。那么约会开始和结束的操作就可以写进__enter__,__exit__两个魔法方法里面。
    ben = male()
    lily = female()
    with date(ben, lily) as d:
    ####d.set_fee(300)
    ####d.set_favorablity(300)
    ####d.fail()
        17
    aa514758835   222 天前
    金钱减完亲密度应该增加啊,怎么会搞得亲密度下降,应该是个 bug
        18
    ben1024   222 天前
    先找个对象?
        19
    SuperMild   222 天前   ♥ 1
    这是一个 Date 对象,它初始化时接受一个 Man 和一个 Girl 的实例,它有一个 run 方法,执行 run 方法表示 man 向 girl 发起约会。

    class Date(Man, Girl) {

    fn run() {

    if woman.accepted {

    money = man.pay() // default = 300, man.money -= 300
    successful = girl.get(money)
    love = successful ? money : -money
    man.love(girl) += money
    girl.love(man) += money

    }

    }

    }

    另外你还需要 Man 和 Girl 对象,他们有如上所示的方法,你可以自己实现其具体内容。
        20
    NMmmm   222 天前
    自己约自己出去玩,
        21
    SuperMild   222 天前
    逻辑上有一些 bug,但大概思路就是这样。
        22
    zhaishunqi   222 天前
    我只想知道分手是不是减 600....
        23
    python30   222 天前
    这是相亲游戏环节?
        24
    zy445566   222 天前   ♥ 1
    es6 写的,java 照搬就是

    class Proson {
    constructor(name, money) {
    this.name = name;
    this.money = money;
    this.love_level = 0;
    console.log(`${this.name} 有 ${this.money} 的钱, 有 ${this.love_level} 的好感度`);
    }

    costLove(love_level) {
    this.love_level-=love_level;
    console.log(`${this.name} 降低了 ${love_level} 的好感度,现在还有 ${this.love_level} 的好感度`);
    }
    }

    class Meet {
    constructor(sender) {
    this.sender = sender;
    this.agreer = null;
    this.startTime = null;
    this.endTime = null;
    console.log(`${this.sender.name} 发起了约会`);
    }
    agree(agreer) {
    this.agreer = agreer;
    console.log(`${this.agreer.name} 接受了约会`);
    }

    start () {
    if(this.agreer !== null) {
    console.log(`约会开始了`);
    this.startTime = new Date();
    } else {
    console.log(`约会还未被接受`);
    }
    }

    end () {
    if(this.startTime !== null) {
    console.log(`约会结束了`);
    this.sender.costMoney(300);
    this.sender.costLove(300);
    this.agreer.costLove(300);
    } else {
    console.log(`约会还未开始`);
    }
    }
    }

    class Man extends Proson {
    constructor(name, money) {
    super(name, money);
    }
    sendMeet() {
    return new Meet(this);
    }
    costMoney (money) {
    this.money-=money;
    console.log(`${this.name} 花费 ${money} 的钱,现在有 ${this.money} 的钱`);
    }
    }

    class Woman extends Proson {
    constructor(name, money) {
    super(name, money);
    }

    agreeMeet(meet) {
    meet.agree(this);
    }
    }

    let tom = new Man('Tom',300);
    let jan = new Woman('Jan',0);
    let meet = tom.sendMeet();
    jan.agreeMeet(meet);
    meet.start();
    meet.end();
        25
    zy445566   222 天前
    可以直接在谷歌浏览器打开控制台运行
        26
    cmqwan   222 天前 via iPhone
    @Bigglesworth 正常,约会途中发生了一些不愉快的事情,聊天的时候哪句话说错了之类的
        27
    pinews   222 天前
    @SuperMild 谢谢 学习一下
    @python30 是的,自己想出来一个相亲小游戏的实例,来学习面对对象编程。
        28
    pinews   222 天前
    @zy445566 太感谢了 正是我想要的
        29
    pinews   222 天前
    @zy445566 虽然还有好多地方看不懂我慢慢消化一下
        30
    fvckDaybyte2   222 天前 via iPhone   ♥ 2
    如果男方金钱减 600,女方金钱加 400,亲密度不变,是不是可以报警了
        31
    arthasliu   222 天前
    @fvckDaybyte2 还有中间商赚差价吗。。
        32
    Isight   222 天前
    约会进行的详细流程与金钱减 300 的关系说清楚,然尝试把金钱加个 0,尝试一下
        33
    fvckDaybyte2   222 天前 via iPhone
    @arthasliu 房费不要钱么……
        34
    senni   222 天前 via Android
    为什么要学编程
    可以 new 一个对象
        35
    zgl263885   222 天前 via iPhone
    简单分析下业务,大概应该有一个基类,人,拥有一些基本的属性和方法,如属性姓名,出生日期,性别,财富,当前对象(们,劈腿情景);方法有约会(参数为人基类,不能排除同性约会),吃饭方法,说话方法,等等。有了基类后,要派生两个子类,男人,女人,定义一些各自特征属性和特有方法,如女人会有大姨妈,而男人没有,男女上厕所方式不同等。针对某些属性和方法,需要使用 public,protect 等关键字尽心访问限制。
    根据业务需求,不断完善基类和子类模型。
    当一个人约会另一个人时候,可以这样调用了:张三.约会(李四,明晚,某某地点,300 元)。
        36
    zgl263885   222 天前 via iPhone
    约会过程中需要触发哪些事件或方法,再定义和调用一下就好了。
        37
    vtoexshan   222 天前
    先找个对象,然后学习起来更容易
        38
    shm7   222 天前 via iPhone
    男方金额-1000w$,女方好感度提升+100%
        39
    zdnyp   222 天前
    @fvckDaybyte2 我怀疑你在开车,但是我又没有证据
        40
    huage2580   222 天前
    嗯,是这样的,这是数据库设计范畴(滑稽
        41
    huage2580   222 天前
    会员表,约会记录表,亲密度表,交易记录表,亲密度记录表。大概是这样的
        42
    c4f36e5766583218   222 天前
    男金钱减 300,双方亲密度减 300 //???what,为啥亲密度-300,失败的约会 233
        43
    win7pro   222 天前
    你需要一个程序员加盟,而你自己当产品就好
        44
    houzhimeng   222 天前
    参考心跳回忆,或者银他妈中的某一集
        45
    jinhan13789991   222 天前
    有一对对象
    有男一人,女一人,
    男提出约会,女同意约会
    约会进行
    约会结束

    此时请参考 TCP 三次握手
        46
    jinhan13789991   222 天前
    @jinhan13789991 逻辑有漏洞,女方同意约会,男方怎么知道女方同意了呢,女方怎么知道男方知道她同意了呢。
        47
    cocosgames   221 天前 via Android
    先 new 出来一个对象再说
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   883 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 36ms · UTC 21:28 · PVG 05:28 · LAX 13:28 · JFK 16:28
    ♥ Do have faith in what you're doing.