刚开始学对象编程,不知道怎么写,大家帮帮忙 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
pinews
V2EX    程序员

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

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

    怎么写啊,完全没头绪,苦恼
    第 1 条附言    2019-05-05 09:43:03 +08:00
    不是题不是钓鱼,想写个相亲网站,不用太具体的代码,就是大致思路。不知道改用程序怎么写。
    47 条回复    2019-05-06 09:42:55 +08:00
    kljsandjb
        1
    kljsandjb  
       2019-05-05 08:33:16 +08:00 via Android
    牛逼的题
    18k
        2
    18k  
       2019-05-05 08:34:35 +08:00 via iPhone
    面相对象的编程
    这里很多人是没有经验的
    lhx2008
        3
    lhx2008  
       2019-05-05 08:38:16 +08:00 via Android
    亲密度肯定要存到另外一个对象,要我做的话这是个二层 map ( table )。
    如果是一女不事二夫的话,同时加到男女的对象上也没问题。
    pinews
        4
    pinews  
    OP
       2019-05-05 08:40:18 +08:00
    @lhx2008 是这样的 假设 5 男 5 女,可以互相约会。
    FelixZeng
        5
    FelixZeng  
       2019-05-05 08:40:39 +08:00
    建议你先找个对象,面向对象编程可能会好一点
    salamanderMH
        6
    salamanderMH  
       2019-05-05 08:42:08 +08:00 via Android
    女方觉得不合适就算了
    pinews
        7
    pinews  
    OP
       2019-05-05 08:42:52 +08:00
    @FelixZeng 正在做相亲网站
    lhx2008
        8
    lhx2008  
       2019-05-05 08:43:25 +08:00 via Android
    @pinews Map<Person, Map<Person, Integer>>
    pinews
        9
    pinews  
    OP
       2019-05-05 08:45:11 +08:00
    @lhx2008 不太懂,如何存入数据库我还是知道的
    Bigglesworth
        10
    Bigglesworth  
       2019-05-05 08:48:11 +08:00
    怎么“男金钱减 300,双方亲密度减 300 ”,这不就是黄了嘛,哈哈哈。。。
    cmqwan
        11
    cmqwan  
       2019-05-05 08:58:24 +08:00
    @Bigglesworth 亲密度的初始值设定可以根据男方的资产而定,比如有一个亿,init 的时候,双方亲密度就是一百万。减个 300,毛毛雨
    crazytree
        12
    crazytree  
       2019-05-05 09:01:47 +08:00
    先 new 一个对象
    Bigglesworth
        13
    Bigglesworth  
       2019-05-05 09:20:11 +08:00
    @cmqwan #11 不是那个初始值问题,我说男方约会花了 300,亲密度反而减 300 了。
    nutting
        14
    nutting  
       2019-05-05 09:20:57 +08:00
    这个亲密度到底怎么定义的,先让你产品经理说清楚吧。别的没什么难度吧
    iixy
        15
    iixy  
       2019-05-05 09:27:43 +08:00
    楼主是做作业还是钓鱼?
    BingoXuan
        16
    BingoXuan  
       2019-05-05 09:29:16 +08:00
    如果是 python 的话,可以用上下文管理器。那么约会开始和结束的操作就可以写进__enter__,__exit__两个魔法方法里面。
    ben = male()
    lily = female()
    with date(ben, lily) as d:
    ####d.set_fee(300)
    ####d.set_favorablity(300)
    ####d.fail()
    aa514758835
        17
    aa514758835  
       2019-05-05 09:32:29 +08:00
    金钱减完亲密度应该增加啊,怎么会搞得亲密度下降,应该是个 bug
    ben1024
        18
    ben1024  
       2019-05-05 09:36:40 +08:00
    先找个对象?
    SuperMild
        19
    SuperMild  
       2019-05-05 10:12:47 +08:00   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 对象,他们有如上所示的方法,你可以自己实现其具体内容。
    NMmmm
        20
    NMmmm  
       2019-05-05 10:15:04 +08:00
    自己约自己出去玩,
    SuperMild
        21
    SuperMild  
       2019-05-05 10:15:10 +08:00
    逻辑上有一些 bug,但大概思路就是这样。
    zhaishunqi
        22
    zhaishunqi  
       2019-05-05 10:15:16 +08:00
    我只想知道分手是不是减 600....
    python30
        23
    python30  
       2019-05-05 10:20:13 +08:00
    这是相亲游戏环节?
    zy445566
        24
    zy445566  
       2019-05-05 10:27:28 +08:00   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();
    zy445566
        25
    zy445566  
       2019-05-05 10:28:41 +08:00
    可以直接在谷歌浏览器打开控制台运行
    cmqwan
        26
    cmqwan  
       2019-05-05 10:36:28 +08:00 via iPhone
    @Bigglesworth 正常,约会途中发生了一些不愉快的事情,聊天的时候哪句话说错了之类的
    pinews
        27
    pinews  
    OP
       2019-05-05 10:48:21 +08:00
    @SuperMild 谢谢 学习一下
    @python30 是的,自己想出来一个相亲小游戏的实例,来学习面对对象编程。
    pinews
        28
    pinews  
    OP
       2019-05-05 10:51:54 +08:00
    @zy445566 太感谢了 正是我想要的
    pinews
        29
    pinews  
    OP
       2019-05-05 10:54:45 +08:00
    @zy445566 虽然还有好多地方看不懂我慢慢消化一下
    fvckDaybyte2
        30
    fvckDaybyte2  
       2019-05-05 11:25:17 +08:00 via iPhone   2
    如果男方金钱减 600,女方金钱加 400,亲密度不变,是不是可以报警了
    arthasliu
        31
    arthasliu  
       2019-05-05 11:28:24 +08:00
    @fvckDaybyte2 还有中间商赚差价吗。。
    Isight
        32
    Isight  
       2019-05-05 11:28:47 +08:00
    约会进行的详细流程与金钱减 300 的关系说清楚,然尝试把金钱加个 0,尝试一下
    fvckDaybyte2
        33
    fvckDaybyte2  
       2019-05-05 11:35:07 +08:00 via iPhone
    @arthasliu 房费不要钱么……
    senni
        34
    senni  
       2019-05-05 12:20:27 +08:00 via Android
    为什么要学编程
    可以 new 一个对象
    zgl263885
        35
    zgl263885  
       2019-05-05 12:29:38 +08:00 via iPhone
    简单分析下业务,大概应该有一个基类,人,拥有一些基本的属性和方法,如属性姓名,出生日期,性别,财富,当前对象(们,劈腿情景);方法有约会(参数为人基类,不能排除同性约会),吃饭方法,说话方法,等等。有了基类后,要派生两个子类,男人,女人,定义一些各自特征属性和特有方法,如女人会有大姨妈,而男人没有,男女上厕所方式不同等。针对某些属性和方法,需要使用 public,protect 等关键字尽心访问限制。
    根据业务需求,不断完善基类和子类模型。
    当一个人约会另一个人时候,可以这样调用了:张三.约会(李四,明晚,某某地点,300 元)。
    zgl263885
        36
    zgl263885  
       2019-05-05 12:31:17 +08:00 via iPhone
    约会过程中需要触发哪些事件或方法,再定义和调用一下就好了。
    vtoexshan
        37
    vtoexshan  
       2019-05-05 12:40:14 +08:00
    先找个对象,然后学习起来更容易
    shm7
        38
    shm7  
       2019-05-05 12:47:58 +08:00 via iPhone
    男方金额-1000w$,女方好感度提升+100%
    zdnyp
        39
    zdnyp  
       2019-05-05 13:52:37 +08:00
    @fvckDaybyte2 我怀疑你在开车,但是我又没有证据
    huage2580
        40
    huage2580  
       2019-05-05 14:45:47 +08:00
    嗯,是这样的,这是数据库设计范畴(滑稽
    huage2580
        41
    huage2580  
       2019-05-05 14:51:54 +08:00
    会员表,约会记录表,亲密度表,交易记录表,亲密度记录表。大概是这样的
    c4f36e5766583218
        42
    c4f36e5766583218  
       2019-05-05 15:02:34 +08:00
    男金钱减 300,双方亲密度减 300 //???what,为啥亲密度-300,失败的约会 233
    win7pro
        43
    win7pro  
       2019-05-05 15:29:16 +08:00
    你需要一个程序员加盟,而你自己当产品就好
    houzhimeng
        44
    houzhimeng  
       2019-05-05 15:30:30 +08:00
    参考心跳回忆,或者银他妈中的某一集
    jinhan13789991
        45
    jinhan13789991  
       2019-05-05 18:39:09 +08:00
    有一对对象
    有男一人,女一人,
    男提出约会,女同意约会
    约会进行
    约会结束

    此时请参考 TCP 三次握手
    jinhan13789991
        46
    jinhan13789991  
       2019-05-05 18:40:25 +08:00
    @jinhan13789991 逻辑有漏洞,女方同意约会,男方怎么知道女方同意了呢,女方怎么知道男方知道她同意了呢。
    cocosgames
        47
    cocosgames  
       2019-05-06 09:42:55 +08:00 via Android
    先 new 出来一个对象再说
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4192 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    Worl is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 00:59 PVG 08:59 LAX 17:59 JFK 20:59
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86