底层思维——01

    抽象思维能力
        软件设计是单纯的思维创造活动,其中最关键的是抽象思维。可以说,抽象是软件设计的核心,特别是在面向对象设计中,如果没有好的抽象概念,就不可能设计和编写出好的面向对象(Object Oriented, OO)程序。
        抽象思维能力是一个人较为重要的思维能力,因为我们的大脑每时每刻都在进行一定的活动作业,那么活动的时候就是在调用思维能力,而抽象思维就是能够给你一个概念你能快速根据这个概念举例出具体事物。
        抽象最为经典的理解就是毕加索的《牛》你可以搜索一下创作这幅画的过程,相信接下来的话就不用在看下去了。
        抽象的分解意思=抽离+具象,只有抽出最为本质的特征离弃血肉之后就是抽离,具象就是根据抽离的概念(模型)迅速能够具体的想象出事物,
        也许不是最开始的抽离的东西,但是你具象出来的东西一定是和原来的东西具有共同之处,否则你就抽象错了。
        其实我们很早就再练习抽象思维了,比如语文课上的总结段落意思、数学课上的定理公式.....这些都是抽象思维的练习
        那什么样的抽象思维是正确的呢?或者说抽象的是否良好呢?我们可以通过它的耦合性、内聚性、充分性和完整性4个指标来度量。
            耦合性
                强耦合使系统变得复杂,因为如果某个模块与其他模块过度相关,它就难以独立地被理解、变化或修正,通过降低耦合性,可以降低复杂性。在耦合和继承的概念之间存在着矛盾关系,继承引入了严重的耦合。一方面,我们希望类之间弱耦合;另一方面,继承又能帮助我们处理抽象之间的共性。我们通常说“组合优于继承”​,正是因为继承的耦合性比较强。鉴于此,有些编程语言(比如Go语言)就直接取消了继承。
            内聚性
                内聚测量了单个模块(类、包、组件)内各个元素的联系程度。我们最不希望出现偶然性内聚,即完全无关的抽象被塞进同一个类或模块中。例如,考虑由狗和航天飞机的抽象组成的一个类。我们最希望出现功能性内聚,即一个类或模块的各元素一同工作,提供某种清晰界定的行为。如果Cow类的语义包含了一头牛的行为——完全是牛,只有牛而没有其他,那么它就是功能性内聚。
            充分性
                所谓充分,是指类或模块应该记录某个抽象设计足够多的特征,从而允许有意义的交互,否则将使组件变得无用。例如,如果我们设计Set(集合)类,应该包含从集合中添加、删除元素的操作,如果忘记设置这些操作,那么这个Set类的功能就是不充分的。好在只要我们构建一个必须使用这种抽象的客户,这种问题很早就会被发现。
            完整性
                完整是指类或模块的接口记录了某个抽象全部有意义的特征。充分性意味着最小的接口,但一个完整的接口意味着该接口包含了某个抽象的所有反向。完整性是一种主观判断,我们有可能做过头。为某个抽象提供全部有意义的操作会让用户不知所措,通常也是不必要的,因为许多高级操作可以由低级操作组合得到。例如,向集合里添加4个元素的操作就是不必要的接口,因为可以通过基础的Add操作得到同样的效果。


        抽象是以概念(词语)来反映现实的过程,每一个概念都有一定的外延和内涵。概念的外延就是适合这个概念的一切对象的范围,而概念的内涵就是这个概念所反映的对象的本质属性的总和。例如“平行四边形”这个概念,它的外延包含着一切正方形、菱形、矩形及一般的平行四边形,而它的内涵包含着一切平行四边形所共有的“有四条边,两组对边互相平行”这两个本质属性。一个概念的内涵愈广,则其外延愈狭;反之,内涵愈狭,则其外延愈广。例如,​“平行四边形”的内涵是“有四条边,两组对边互相平行”​,而“菱形”的内涵除这两条本质属性外,还包含着“四边相等”这一本质属性。​“菱形”的内涵比“平行四边形”的内涵广,而“菱形”的外延要比“平行四边形”的外延狭。内涵决定外延,但外延并不决定其内涵,比如“等边三角形”和“等角三角形”有相同的外延,但是却指向不同的内涵。外延和内涵也并非总是反向变化,事实并非如此,当内涵对其外延没有影响的时候,内涵的增加并不会导致外延的变小,比如“活着的人”​“活着的不超过1000岁的人”​。内涵虽然增加了,但其外延是一样的。[插图]抽象的层次性主要体现在概念的内涵和外延上,而这种层次性基本可以体现在任何事物上

汉字字库存储芯片扩展实验 # 汉字字库存储芯片扩展实验 ## 实验目的 1. 了解汉字字库的存储原理和结构 2. 掌握存储芯片扩展技术 3. 学习如何通过硬件扩展实现大容量汉字字库存储 ## 实验原理 ### 汉字字库存储基础 - 汉字通常采用点阵方式存储(如16×16、24×24、32×32点阵) - 每个汉字需要占用32字节(16×16)到128字节(32×32)不等的存储空间 - 国标GB2312-80包含6763个汉字,需要较大存储容量 ### 存储芯片扩展方法 1. **位扩展**:增加数据总线宽度 2. **字扩展**:增加存储单元数量 3. **混合扩展**:同时进行位扩展和字扩展 ## 实验设备 - 单片机开发板(如STC89C52) - 存储芯片(如27C256、29C040等) - 逻辑门电路芯片(如74HC138、74HC373等) - 示波器、万用表等测试设备 - 连接线若干 ## 实验步骤 ### 1. 单芯片汉字存储实验 1. 连接27C256 EPROM芯片到单片机系统 2. 将16×16点阵汉字字库写入芯片 3. 编写程序读取并显示汉字 ### 2. 存储芯片字扩展实验 1. 使用地址译码器(如74HC138)扩展多片27C256 2. 将完整GB2312字库分布到各芯片中 3. 编写程序实现跨芯片汉字读取 ### 3. 存储芯片位扩展实验 1. 连接两片27C256实现16位数据总线扩展 2. 优化字库存储结构,提高读取速度 3. 测试并比较扩展前后的性能差异 ## 实验代码示例(单片机部分) ```c #include <reg52.h> #include <intrins.h> // 定义存储芯片控制引脚 sbit CE = P2^7; // 片选 sbit OE = P2^6; // 输出使能 sbit
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值