小弟本科通信,研究生也是通信,给硬件写驱动,改驱动。工作找的是 C++的后台开发,可是我一直没从 C 语言面向过程转向 C++的面向对象编程上来,还请各位帮忙解释下怎么设计一个 C++的类。小弟不甚感激。
1
Em5O7B1JGfjQnBry 2016-10-15 09:41:42 +08:00 via Android
看 C++ primer 的一些关于类设计的内容,然后试着写一个稍稍大一些的项目,就可以理解面向对象的好了。
|
2
liuxu 2016-10-15 09:52:44 +08:00
学面向对象学一下 java 快速教程应该是最好的
|
3
bossfrog 2016-10-15 10:01:34 +08:00 via Android
一个设计良好类就是一个明确清晰的"黑盒子",使用者不需要知道太多的东西、甚至根据直觉就能把它用对。和语言无关
|
4
anubiskong 2016-10-15 10:08:08 +08:00
函数式编程, 解决你的烦恼, 手动斜眼
|
5
AscenZ 2016-10-15 10:08:14 +08:00
同意二楼的看法,之前还只学了 c/c++的时候,对面向对象比较难理解,后来做了一段时间 OC ,对面向对象才理解的好一点,现在再回来看 c++感觉清晰了一些。建议可以先看一下 java / OC 之类的。
|
6
lsmgeb89 2016-10-15 12:29:12 +08:00
没有觉得 C++ 的面向对象很难理解,概念都是差不多的,不用去看 Java 什么的
C++ Primer Chapter 7 & 15 |
7
Umix 2016-10-15 13:16:02 +08:00 via Android
大话设计模式
|
8
msg7086 2016-10-15 13:18:50 +08:00
|
9
noli 2016-10-15 14:43:29 +08:00 via iPhone
c 和 c++长于解决的问题的尺度是不一样的。 c 面对硬件驱动这种问题是非常合适的工具。如果你想知道 c++中面向对象这一部分怎么用怎么写,你得先清楚它适合解决的问题的尺度。
c++适用的场合一般是对性能要求非常高的大规模软件场景。什么叫做大规模,就是几十成百上千号人,为同一个软件项目生产代码,别拿 linux 内核来抬杠。这时候编程语言除了要承担产出机器码的终极作用,还必须承担一部分的人与人之间沟通的作用。 c++中的面向对象,很多时候就是为了这种情况来使用的。换句话说,如果只是你的个人小工具,没必要因为 OO 而 OO ,怎么舒服怎么来。 面向对象三大思想,继承,封装,多态,在 c++中都是为了更好地沟通而设计的。 能接受这个思路再往下说。 |
10
SuperMild 2016-10-15 14:56:08 +08:00
lz 这个问题问得太大了,感觉还是先看书吧,基础的东西(包括类的思想和实现方法)书里都有写,然后遇到想不通的地方可以再来问,举出具体的例子。
|
11
xsxsxszs 2016-10-15 17:56:18 +08:00 via iPhone
建议先别看设计模式之类的,容易把自己绕进去,导致为了模式而模式。可以看好的开源代码模仿着来,设计模式这种应该是有一定项目经验之后再去看比较好。印象比较深刻的是硕士设计模式课程,有工作经验的同学听了觉得获益匪浅,说终于明白了以前工作里为什么要那么设计结构。而没工作经验的同学(比如我)基本一头雾水,觉得太理论了,听了两次课就没再去了。
|
12
zhidian 2016-10-15 18:14:09 +08:00
同意楼上。先写(几)十万行代码再说。发现痛点了,再去重构。你就能设计一个好类了。
刺激量不够,理论和方法,都是浮云。 个人感觉,冲着架构师去,是成不了架构师的。首先你要是一个程序员。 |
13
nozama 2016-10-15 18:47:25 +08:00
我自己是这样工作的:抽象出问题的本质(思考...) -> 封装数据和行为 -> 对照 SOLID 原则反复重构 -> 设计模式浮现
|
14
hyrious 2016-10-15 19:12:38 +08:00 via Android
先区分好 is_a 和 has_a
|
15
zhuangzhuang1988 2016-10-15 19:32:42 +08:00
既然是 c++板块
肯定是买本 c++老爹的书 https://book.douban.com/subject/4604591/ 《 C++程序设计语言》 然后看 第四部分 用 C++ 做设计 第 23 章 开发和设计 23.1 概述 。。。 。。。 |
16
beginor 2016-10-15 19:40:26 +08:00
我觉得,对于单个类来说, 职责单一, 高内举, 能做到这两点就算是一个好的类。 至于体现松耦合则是多个类之间的关系了。
|
17
q397064399 2016-10-16 09:01:33 +08:00 via iPhone
好吧 你需要敏捷软件开发
|
18
HarveyDent 2016-10-16 23:24:03 +08:00
多写多踩坑,没有捷径的。
|