第六周总结
Posted srz123
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第六周总结相关的知识,希望对你有一定的参考价值。
本次我基本完成了地铁查询系统的web端内容,但成品仍有很多瑕疵,只满足了最基本的内容功能,设计代码如下:
def get_station_info(station_name):
sql = "SELECT * FROM stations WHERE name=\'%s\'" % station_name
result = execute_sql(sql)
if len(result) == 0:
return None
else:
return result[0]
import heapq
def dijkstra(graph, start, end):
# 记录每个节点的距离和前驱节点
distances = start: 0
path =
# 将起点加入队列
heap = []
heapq.heappush(heap, (0, start))
# 遍历所有节点
while heap:
(current_distance, current_node) = heapq.heappop(heap)
# 如果当前节点已经访问过,则跳过
if current_node in path: continue
# 将当前节点标记为已访问
path[current_node] = current_distance
# 如果到达终点,则返回最短路径长度
if current_node == end:
return current_distance
# 遍历当前节点的邻居节点
for neighbor, distance in graph[current_node].items():
new_distance = current_distance + distance
# 如果通过当前节点到邻居节点的距离更短,则更新距离和前驱节点
if neighbor not in distances or new_distance < distances[neighbor]:
distances[neighbor] = new_distance
heapq.heappush(heap, (new_distance, neighbor))
# 如果无法
达终点,则返回无穷大
return float(\'inf\')
def calculate_distance(from_station, to_station):
from_station_info = get_station_info(from_station)
to_station_info = get_station_info(to_station)
if not from_station_info or not to_station_info:
return None
graph = build_graph()
distance = dijkstra(graph, from_station_info["id"], to_station_info["id"])
return distance
def build_graph():
graph =
sql = "SELECT * FROM graph"
result = execute_sql(sql)
for row in result:
from_station_id, to_station_id, distance = row["from_station_id"], row["to_station_id"], row["distance"]
# 构建起点到终点的连接关系和权重
if from_station_id not in graph:
graph[from_station_id] =
graph[from_station_id][to_station_id] = distance
# 构建终点到起点的连接关系和权重
if to_station_id not in graph:
graph[to_station_id] =
graph[to_station_id][from_station_id] = distance
return graph
20182315 第六周学习总结
20182315 2019-2020-1 《数据结构与面向对象程序设计》第六周学习总结
教材学习内容总结
多态:定义为“有多种形式”,多态引用是指一个在不同时刻可以指向不同类型对象的引用变量。
通过继承实现多态:
(1):当某类名声明一个引用变量,该变量可引用这个类的任意对象,还可以引用继承他的类的任何对象。
(2):Mammal pet; Horse secretariat=new Horse(); pet=secretasriat;
该程序将父类定义的变量pet赋给子类Horse使用。但反过来的操作会丢失一些数据,因为子类包括的方法可能是父类所不具备的,所以会引起数据丢失。
(3): Animal creature=new Horse();
这种思路也是可行的。
(4):Mammal继承于Animal,Horse继承于Mammal。而Animal定义的变量可调用三个类的方法。如果三个类都有move这个方法,那如何调用?在使用前应提前声明
接口:Java的接口是一组常量和抽象方法,抽像方法是一个没有被实现的方法,接口是不能被实现的。接口的抽象方法通常都不加abstract,默认接口都是公共的。
继承适用于接口!
教材学习中的问题和解决过程
- 问题1:接口由implements接入,如果一个程序想用多个接口,如何处理?
问题1解决方案:一:接口可以连接其他的接口,通过接口之间的传递关系调用接口。二:接口在使用时可以逗号连接两个接口。
- 问题2:对通过接口实现多态的理解存在不足。
问题2解决方案:通过深入思考,以课本为例:Speaker为接口,Philosopher实现了该接口,
Speaker current; current =new Speaker;
可将Philosopher中的对象赋给Speaker声明的current使用,类似父类与子类。即可认为实现Speaker接口的类都可被current引用。以实现多态。Speaker guest; guest=new philosopher(); guest.Speaker(); guest=new Dog(); guest.Speaker;
与类实现多态一致,先声明再使用。- 问题3:finally子句具体作用不明确。
问题3解决方法:如果try语句执行完没有错误,即运行完执行finally语句。若try出现错误则先运行catch语句,然后再运行finally。finally常用来管理资源,如释放缓冲区,或连接数据库。
- 问题4:try抛出问题后,是否会继续执行程序?
问题4解决方法:若为try-catch语句,发现异常处理后可继续运行,若为try-finally语句,则结束运行。
代码调试中的问题和解决过程
- 问题1:在Comparable接口中的“object o”不理解,不会使用。
- 问题1解决方案:object即为object类。所有的类皆为object引伸而出。因为多态,object类可以被声明为其他任何类型,即可灵活使用。
- 问题2:对于自定义异常后报错后继续与运行程序的使用方法掌握存在盲点。
- 问题2解决方案:(一):操作步骤如下:1.在报错方法头加上
throws "+异常类名"
。2.在准备抛异常的位置写上throw new "类名"(参数);
。3.catch的字句加上异常方法名,再加一个对象,用于引出异常类里的方法。(二):对于另外一种情况,抛出异常后终止操作,要先实例化一个对象,例如pp10_2_1 problem=new pp10_2_1(a);
然后直接throws problem;
代码托管
(由于本人在本周使用新建文件夹,因此本周的代码量不包括之前的代码量)
上周考试错题总结
- 错题1及原因,错题1.The instruction super( ); does which of the following?
A .calls the method super as defined in the current class
B .calls the method super as defined in the current class‘parent class
C .calls the method super as defined in java.lang
D .calls the constructor as defined in the current class
E .calls the constructor as defined in the current class‘parent class
解析:instruction super表示对当前类的父类中某些内容的调用。因为除了super()之外没有消息,所以它是对父类构造函数的调用。
- 错题2Which of the following is true regarding Java classes?
A .All classes must have 1 parent but may have any number of children (derived or extended) classes
B .All classes must have 1 child (derived or extended) class but may have any number of parent classes
C .All classes must have 1 parent class and may have a single child (derived or extended) class
D .All classes can have any number (0 or more) of parent classes and any number of children (derived or extended) classes
E .All classes can have either 0 or 1 parent class and any number of children (derived or extended) classes
解析:Java支持继承,但不支持多重继承,因此Java类可以有任意数量的子节点,但只有一个父级。此外,由于所有Java类都直接或间接从对象类继承,因此所有Java类只有一个父类。
答案:A
- 错题3 原因分析
nheritance through an extended (derived) class supports which of the following concepts?
A. interfaces
B. modular
C. information hiding
D. code reuse
E. correctness
分析:通过扩展一个类并继承它,新类不必重新实现任何这些继承的方法或实例数据,从而节省了程序员的工作量。因此,代码重用是为了您的需要扩展它而重用其他代码的好处。
答案:D
结对及互评
- 基于评分标准,我给本博客打分:12分。得分情况如下:
正确使用Markdown语法加1分:
模板中的要素齐全加1分
教材学习中的问题和解决过程, (加4分)
代码调试中的问题和解决过程, (加2分)
周五前发博客的加1分
进度条中记录学习时间与改进情况的加1分
错题学习深入的加1分
结对学习情况真实可信的加1分
点评过的同学博客和代码
- 本周结对学习情况
其他(感悟、思考等,可选)
Java在自学的过程中难免会遇到困难,但在解决困难的过程中,可以锻炼自身的分析问题,解决问题的能力。对答案的检索,以及优质学习平台的发掘都有不可代替的作用
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 200/200 | 2/2 | 20/20 | |
第二周 | 300/500 | 2/4 | 18/38 | |
第三周 | 500/1000 | 3/7 | 22/60 | |
第四周 | 300/1300 | 2/9 | 30/90 | |
第五周 | 800/1000 | 3/4 | 20/18 | |
第六周 | 700/900 | 3/3 | 20/19 |
计划学习时间:20小时
实际学习时间:21小时
参考资料
以上是关于第六周总结的主要内容,如果未能解决你的问题,请参考以下文章