刚接触编程,开始看Object-C,想问一下,究竟怎么深入理解面向对象? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iOS 开发实用技术导航
NSHipster 中文版
http:/nshipster.cn/
cocos2d 开源 2D 游戏引擎
http://www.cocos2d-iphone.org/
CocoaPods
http://cocoapods.org/
Google Analytics for Mobile 统计解决方案
http://code.google.com/mobile/analytics/
WWDC
https://developer.apple.com/wwdc/
Design Guides and Resources
https://developer.apple.com/design/
Transcripts of WWDC sessions
http://asciiwwdc.com
Cocoa with Love
http://cocoawithlove.com/
Cocoa Dev Central
http://cocoadevcentral.com/
NSHipster
http://nshipster.com/
Style Guides
Google Objective-C Style Guide
NYTimes Objective-C Style Guide
Useful Tools and Services
Charles Web Debugging Proxy
Smore
Elizen
V2EX    iDev

刚接触编程,开始看Object-C,想问一下,究竟怎么深入理解面向对象?

  •  
  •   Elizen 2014-01-12 13:12:55 +08:00 6051 次点击
    这是一个创建于 4341 天前的主题,其中的信息可能已经有所发展或是发生改变。
    46 条回复    1970-01-01 08:00:00 +08:00
    MASAILA
        1
    MASAILA  
       2014-01-12 13:17:55 +08:00
    多写代码
    mingming
        2
    mingming  
       2014-01-12 14:43:23 +08:00
    找个妹子当对象,每天面对着她,慢慢就理解了。
    FrankFang128
        3
    FrankFang128  
       2014-01-12 14:44:34 +08:00 via Android
    我已放弃面向对象了,那其实是面向类,而不是对象。
    OC不了解。
    faceair
        4
    faceair  
       2014-01-12 14:58:41 +08:00
    对象就是一堆数据和方法的集合

    有时候对象之间的代码要复用,又引入继承概念

    有时候各种对象要组合着用,为了理清各种关系就引入设计模式概念
    MichaelYin
        5
    MichaelYin  
       2014-01-12 15:35:18 +08:00   2
    把妹子从接触到“深入”都要一定过程,何况编程乎~
    沉住气,慢慢来,骚年~
    Ultratude
        6
    Ultratude  
       2014-01-12 15:38:02 +08:00 via iPhone
    多聊聊。
    ipconfiger
        7
    ipconfiger  
       2014-01-12 15:39:22 +08:00   1
    唯一的忠告就是-----千万不要去看王垠的博客........
    txx
        8
    txx  
       2014-01-12 15:50:03 +08:00 via iPhone
    多去思考,以对象为主体来刻画他的属性,方法。
    bengol
        9
    bengol  
       2014-01-12 16:43:01 +08:00
    好好写代码,学习数据结构和算法吧,别搞这些没用的
    subpo
        10
    subpo  
       2014-01-12 16:45:42 +08:00 via Android
    先把语言名字拼对
    Seita
        11
    Seita  
       2014-01-12 16:52:15 +08:00
    面向对象不过是装逼的说法。
    Kai
        12
    Kai  
       2014-01-12 17:38:01 +08:00
    参考这个节点右侧的链接,多写多练习 :)
    min
        13
    min  
       2014-01-12 17:43:54 +08:00
    head first有本说ooad的书,lz买来看看
    levn
        14
    levn  
       2014-01-12 17:48:40 +08:00
    学习simula和smalltalk……
    PrideChung
        15
    PrideChung  
       2014-01-12 17:49:34 +08:00
    @ipconfiger 别捣乱,你不说人家还未必知道王垠是谁。

    编程这种东西,无他,但手熟尔,纸上谈兵是学不会的。当你把一千行代码写在一个文件里面的时候,你就会开始考虑怎样提高代码可读性了。记得当年在大学学Java,老师给了一大堆猫猫狗狗的例子来说明什么是继承接口抽象,一个都没明白,直到自己开始动手做期末大作业的时候才真正搞清楚了。
    pirex
        16
    pirex  
       2014-01-12 18:11:23 +08:00
    找个对象
    chchwy
        17
    chchwy  
       2014-01-12 18:28:33 +08:00
    先多代,然後有一些後去 Head first design pattern。
    young
        18
    young  
       2014-01-12 18:33:23 +08:00
    Object-C的OO,只能呵呵了
    erylee
        19
    erylee  
       2014-01-12 18:39:10 +08:00
    能不面向就不要面向,想怎么写就怎么写。做爱时候可以“面向对象”,编程是没必要的,OO整套理论都是很荒谬的。
    dorentus
        20
    dorentus  
       2014-01-12 18:50:43 +08:00
    @young
    有什么好呵呵的。就因为和它是源自 smalltalk、和 C++ 的源自 simula 的不一样么?

    ----
    楼主要是有兴趣的话,可以去读一下《Ruby 元编程》,反正 Ruby 的 object system 和 Obj-C 出自同源的。
    vob636
        21
    vob636  
       2014-01-12 18:51:05 +08:00
    首先你要明白,什么才能算是对象,什么是过程……
    ipconfiger
        22
    ipconfiger  
       2014-01-12 19:06:58 +08:00
    @PrideChung 只顾埋头赶路不顾抬头看路标的话,很多时候是花了很多时间绕路。

    看看王垠没啥坏处,呵呵。对象式或者函数式什么的,别钻牛角尖,都看看都了解一下,多学多用学以致用嘛
    myrual
        23
    myrual  
       2014-01-12 20:59:09 +08:00
    刚接触编程的时候还是把东西做出来对于成长很有意义。
    所以选一个脚本语言其实很好的,比如ruby。
    如果要做native 客户端,oc也算是不错的选择了,ide,debug都很方便。

    刚学会游泳的人,应该关心的是如何能够游的更远。而不是姿势是不是达到了省冠军的水平。
    myoula
        24
    myoula  
       2014-01-12 21:06:55 +08:00
    太深入会没有对象的
    Elizen
        25
    Elizen  
    OP
       2014-01-12 21:08:55 +08:00
    @FrankFang128 我看了一段书,觉得他说的意思也是针对类而言,而且再说,对象就是类的一个特殊实例,总之有点蒙。
    Elizen
        26
    Elizen  
    OP
       2014-01-12 21:09:33 +08:00
    @MichaelYin 恩,现在还在看,谢谢。
    luoqeng
        27
    luoqeng  
       2014-01-12 22:02:23 +08:00
    自己去实现一个面向对象系统,先用schmem,然后再试试用C去实现。
    FrankFang128
        28
    FrankFang128  
       2014-01-12 23:50:53 +08:00
    @Elizen 面向对象(其实是面向类)是极其抽象的概念,抽象到什么程度呢?面向对象的思想可以描述整个世界。所谓「一切皆为对象」。
    所以你要做的就是具体化,具体化的意思就是在写代码中体会。
    nsa
        29
    nsa  
       2014-01-13 01:39:47 +08:00
    Objective-C Overview -> Concept -> Conception -> Essentials -> MemoryMgmt
    dorentus
        30
    dorentus  
       2014-01-13 03:17:42 +08:00 via iPad
    @FrankFang128 如果我没理解错的话,Objective-C 更符合你说的面向对象而不是类似 C++ 那种面向类的形式。
    dorentus
        31
    dorentus  
       2014-01-13 03:20:11 +08:00 via iPad
    @dorentus 类本身也是对象。(Simula 系的 C++ 在这点上就完全不同。)
    Elizen
        32
    Elizen  
    OP
       2014-01-13 08:13:31 +08:00
    @FrankFang128 这句我懂点....接着看书吧,这周先把书啃一遍,然后拿个项目练手,可能会理解的深一点吧。
    Elizen
        33
    Elizen  
    OP
       2014-01-13 08:14:17 +08:00
    @PrideChung 我还真的不知道他是谁,不过看你们的意思,我就不打算去搜了。
    Elizen
        34
    Elizen  
    OP
       2014-01-13 08:15:55 +08:00
    @dorentus Sorry,没研究过C++,所以对区别什么没感觉,我觉得可能是个好事吧...
    Elizen
        35
    Elizen  
    OP
       2014-01-13 08:18:46 +08:00
    @myrual 还有人和我说学学python的,但是没有什么项目想法...也不了解...
    myrual
        36
    myrual  
       2014-01-13 11:25:42 +08:00
    @Elizen 我也曾经推荐别人学习python,但是我现在推荐从ruby开始。
    尤其是用rails开始,会很有成就感。 推荐照着agile-web-development-with-rails-4开始。
    另外国内的ruby社区对初学者很友好。相比之下python社区对新手没那么友善。

    python也很适合初学者,但是没有rails这样的完整而且优秀框架能快速的让人上手做一些非常明显的东西。如果你要解决一些实际的工程上的问题,python确实有很多非常优秀的工具可以拿来用(个人感觉可能比ruby多)。
    zhc
        37
    zhc  
       2014-01-13 12:23:05 +08:00
    编码过程中要怀着追求最完美代码的心,当感觉自己代码不爽的时候搜寻思考让它变得优美得方式,慢慢的你会发现你已经慢慢学会了面向对象,和许多其他优秀的编程方式.
    Actrace
        38
    Actrace  
       2014-01-13 12:50:41 +08:00
    孩子,刚接触编程是无法找到对象的,更别提深入了解对象了.先把基本功练好,写个十年八年,在去找对象理解吧.
    archieyang
        39
    archieyang  
       2014-01-13 13:00:18 +08:00
    推荐两本书:《Head first 设计模式》和《重构》
    wizardoz
        40
    wizardoz  
       2014-01-13 13:03:12 +08:00
    你必须知道什么叫做面向过程,你才能理解什么叫面向对象
    Elizen
        41
    Elizen  
    OP
       2014-01-13 14:56:18 +08:00
    @wizardoz 看来我目前这个状态,不应该提这个问题啊...恐怕只会让我填好多烦恼...
    Elizen
        42
    Elizen  
    OP
       2014-01-13 14:57:40 +08:00
    @zhc 我只是想学学编程,就准备拿IOS开刀,做个应用,看了两天书,总在形容面向对象这个东东,我就不理解了...写个十年八年的前提是,我去做程序员,虽然我也蛮想去做一个程序员。
    Elizen
        43
    Elizen  
    OP
       2014-01-13 14:57:58 +08:00
    @MichaelYin 我觉得这个回复,我必须要感谢一下。
    feuvan
        44
    feuvan  
       2014-01-13 15:08:45 +08:00
    你可以先开始写你想要写的 iOS 项目,当你的代码有一定量的时候你会去自然而然的考虑怎么让代码有组织,组件怎么有效交互,怎么设计精简而足够用的接口。
    至于OO,那是前人经过时间总结出来的,虽然大家一上来就学一些面向对象的课程,但总的来说学生时代大多是知其然不知其所以然。
    学而不思则罔,先写点代码吧。理解面向对象将会是自然而然的事情,就像猫吃鱼狗吃肉奥特曼打小怪兽。至于什么设计模式,将来你看了书自然也就明白你过去写的代码其实就是什么模式,只不过别人把它总结出来成为一套理论。
    Elizen
        45
    Elizen  
    OP
       2014-01-13 16:38:31 +08:00
    @feuvan 没错,开始写可能比什么都重要。
    Hector01
        46
    Hector01  
       2014-01-14 06:45:43 +08:00 via iPad
    刚开始接触编程是不可能深入理解面向对象的,所以就不要思考这个问题了,先写点东西吧。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5266 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 07:11 PVG 15:11 LAX 23:11 JFK 02:11
    Do have faith in what you're doing.
    ubao msn 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