伯克利 CS61A 课堂笔记 09 —— Data Abstraction

本系列为加州伯克利大学著名 Python 基础课程 CS61A 的课堂笔记整理,全英文内容,文末附词汇解释。

目录

01 Data Abstraction 数据抽象

Ⅰ Rational Numbers

Ⅱ Rational Number Arithmetic

02 Pairs 对

Ⅰ Representing Pairs Using Lists

Ⅱ Reducing to Lowest Terms

03 Abstraction Barriers 抽象障碍

04 Data Representations 数据表示

Ⅰ What is Data?

Ⅱ Demo

Ⅲ Rational Data Abstraction Implemented as Functions


01 Data Abstraction 数据抽象

Compound objects combine objects together:

​        A date: a year, a month, and a day.

​        A geographic position: latitude and longitude.

An abstract data type lets us manipulate compound objects as units.

Isolate two parts of any program that uses data:

​        How data are represented (as parts).

​        How data are manipulated (as units).

Data abstraction: A methodology by which functions enforce an abstraction barrier between representation and use.

Ⅰ Rational Numbers

Exact representation of fractions is a pair of integers. However, as soon as division occurs, the exact representation may be lost !

Assume we can compose and decompose rational numbers:

Ⅱ Rational Number Arithmetic

#最上层

def mul_rational(x, y):
    """Multiply rational numbers x and y."""
    return rational(numer(x) * numer(y),
                    denom(x) * denom(y))

def add_rational(x, y):
    """Add rational numbers x and y."""
    return rationa
CS61A 是加州大学伯克利分校的一门计算机科学入门课程,重点在于教授学生如何像程序员一样思考。它覆盖了函数式编程、面向对象编程以及一些基础的数据结构等内容。通常这门课使用 Python 编程语言作为教学工具。 下面是一个基于 CS61A 内容的学习路线图,帮助你系统化地掌握其核心知识点: --- ### 学习阶段及内容安排 #### 第一部分:计算思维与Python基础知识 - **第一章** - 计算机程序的本质理解;简单表达式的求值过程。 - 掌握变量赋值、基本数据类型(string, number)及其运算规则。 #### 第二部分:高阶函数和递归 - 函数定义(def关键字),局部变量作用域链。 - 迭代 vs 递归 —— 解决问题的不同思维方式对比分析。 - Lambda匿名函数的应用场合探讨。 - 高阶函数(map/filter/reduce etc.)的概念引入及相关案例练习。 #### 第三部分:抽象能力培养 - 数据抽象(Data Abstraction): 将复杂信息简化成易于管理的形式表示出来。 - ADT(Abstract Data Types)- 用户视角下的封装原则体现。 - 树(Tree)/列表(Lists)等复合型数据类型的构建技巧讲解。 #### 第四部分:面向对象设计思想(OOD) - 类(Class)与实例(Instance)之间的关系建立。 - 继承(Inheritance)特性说明及其优缺点权衡考量。 - 构造器(Constructor)__init__() 的工作原理剖析。 #### 第五部分:序列(Seqences) 和树(Trees) 深入探究 - 列表推导式(List Comprehensions)高效编写简洁优雅代码的艺术展现。 - 字符串(String Methods)常用操作汇总分享。 - 广度优先搜索(BFS)、深度优先搜索(DFS)算法逻辑阐述并通过实际例子加以巩固强化记忆效果。 #### 最终项目实践环节(Project Section): 选择合适的小型工程项目主题进行完整生命周期开发体验全流程模拟训练。(比如文字冒险游戏Text Adventure Game) --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值