软件构造实验:面向复用与维护的ADT设计

需积分: 26 9 下载量 140 浏览量 更新于2024-07-15 1 收藏 5.78MB DOCX 举报
"本次实验是哈尔滨工业大学计算机学院《软件构造》课程的Lab3,旨在让学生掌握软件构造技术,包括子类型、泛型、多态、重写、重载、继承、代理、组合、OO设计模式、语法驱动编程、正则表达式、基于状态的编程以及API设计与复用。实验要求学生不直接为五个特定应用(高铁车次管理、航班管理、操作系统进程管理、大学课表管理、学习活动日程管理)编写代码,而是通过抽象数据类型(ADT)和泛型技术,设计一套可复用的ADT及其实现,以提高代码的复用性和可维护性。学生需要在GitHub上创建Lab3仓库并记录实验过程,选择三个应用场景进行开发,例如飞机、火车和课程表,并识别它们的共性,设计一个名为PlanningEntry<R>的接口,包含开始、取消、完成、获取名称、获取当前状态和获取状态类等共性操作。" 在本次实验中,学生们将深入理解并实践以下几个重要的IT知识点: 1. **子类型**(Subtyping):子类型是一种继承关系,允许一个类型(子类型)被视为另一个类型(超类型)的实例。这在Java等面向对象语言中常见,通过`extends`关键字实现。 2. **泛型**(Generics):泛型允许在类、接口和方法中使用类型参数,以提高代码的复用性和安全性。泛型在Java中使用`<T>`表示,其中`T`是类型参数,可以替换为任何实际类型。 3. **多态**(Polymorphism):多态是面向对象的核心特性之一,允许同一种行为在不同类的对象中表现出不同的形式。Java中的多态通过方法重写(Override)和方法重载(Overload)来实现。 4. **继承**(Inheritance):继承是面向对象编程的基础,一个类可以从另一个类继承属性和方法,以便复用和扩展已有代码。 5. **代理**(Proxy):代理模式是一种设计模式,用于在不修改原有对象的情况下,为对象添加额外的功能或控制访问。在Java中,可以使用动态代理(Dynamic Proxy)来实现。 6. **组合**(Composition):组合是另一种设计模式,它将对象组织成树形结构,表示部分-整体的关系,允许你通过整体来访问部分的属性和行为。 7. **OO设计模式**:设计模式是解决常见软件设计问题的最佳实践,如工厂模式、单例模式、观察者模式等,它们是软件开发中的通用解决方案。 8. **语法驱动的编程**:这种编程风格以语言的语法规则为基础,用于解析和生成特定格式的文本,例如编译器和解释器的开发。 9. **正则表达式**:正则表达式是一种强大的文本处理工具,用于匹配、查找、替换等操作,广泛应用于字符串处理。 10. **基于状态的编程**:状态机编程是根据系统或对象的不同状态来控制程序流程,常用于事件驱动或并发系统的实现。 11. **API设计与复用**:API(Application Programming Interface)是一组预定义的函数、类和接口,允许开发者在不同组件之间交互。良好的API设计应具备清晰的接口、合理的命名和高效的性能,以促进代码的复用。 在实验过程中,学生们需要识别不同应用场景的共性,比如航班、火车和课程表的共同特征可能是“计划项”(PlanningEntry),并据此设计出一个通用接口。实验报告应详细记录每个任务的实现步骤、设计思路和问题解决策略,同时展示关键代码片段,而非完整代码。通过这样的实践,学生不仅能提升编程技能,还能加深对面向对象编程和软件工程原则的理解。