Java面向对象设计课程总结
目录
正文
一、前言
回顾这学期的 Java 面向对象设计课程,整个学习过程可谓是充实且充满挑战。从线上课程的理论学习到线下课堂的互动探讨,从 PTA 上的编程训练到实验课的项目实践,每一个环节都构成了完整的知识体系。Java面向对象设计课程是一门理论与实践紧密结合的课程,通过多种教学方式帮助学生深入理解和掌握面向对象编程的核心概念和技术。在本课程中,我们完成了包括Blog作业、PTA作业、实验、线上课程以及线下课程在内的多项任务。整体来看,工作量较大,尤其是实验和PTA作业部分,需要投入较多时间和精力进行代码编写和调试。课程难度适中,但在某些抽象概念的理解和复杂代码的实现上,仍有一定挑战性。线上课程提供了丰富的学习资源和灵活的学习时间,但需要学生具备较强的自主学习能力;线下课程则通过教师的讲解,帮助学生更好地理解重点和难点内容。
二、面向对象技术总结
1.封装
封装是面向对象编程的核心概念之一,它通过将对象的属性和行为封装在一起,隐藏内部实现细节,仅通过公共接口与外界交互。封装不仅提高了代码的可维护性和安全性,还降低了模块间的耦合度。
学习心得
通过PTA作业和实验,我熟练掌握了如何使用private修饰符隐藏类的成员变量,并通过public方法提供访问和修改接口。例如,在设计一个客户类时,将客户的姓名、年龄等属性封装起来,只通过getName()、setName()等方法进行操作,既保证了数据的完整性,又方便了后续的修改和扩展。
示例代码
点击查看代码
public class Customer {
private String name;
private int age;
public Customer(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
2.继承
继承是面向对象编程中实现代码复用的重要机制,允许一个类继承另一个类的属性和方法。通过继承,子类可以继承父类的公共方法和属性,并且可以添加新的方法和属性或重写父类的方法。
学习心得
在学习过程中,我掌握了继承的基本语法和使用方法,理解了super关键字的作用,能够正确地调用父类的构造方法和方法。例如,在设计一个动物类和狮子类时,狮子类继承动物类的属性和方法,同时添加了狮子特有的行为,如“狮子怒吼一声”。
示例代码
点击查看代码
public class Animal {
public void enterElectric() {
}
}
public class Lion extends Animal {
@Override
public void enterElectric() {
System.out.println("狮子怒吼一声");
}
}
3.多态
多态是面向对象编程的又一核心概念,允许同一个接口使用不同的底层实现。多态分为编译时多态(方法重载)和运行时多态(方法覆盖)。在学习过程中,我通过实验和PTA作业深入理解了多态的原理和应用。
学习心得
例如,在一个图形类的体系中,定义一个getArea()方法,不同的图形类(如圆形、矩形)通过覆盖该方法实现不同的绘制行为。在运行时,根据对象的实际类型调用相应的方法,这种动态绑定机制使得代码更加灵活和可扩展。
示例代码
点击查看代码
public abstract class Shape {
public abstract double getArea();
}
public class Circle extends Shape {
private double r;
@Override
public double getArea() {
return Math.PI * Math.pow(r,2);
}
}
public class Rectangle extends Shape {
private double length;
private double width;
@Override
public double getArea() {
return length * width;
}
}
public class Test {
public static void main(String[] args) {
Shape shape1 = new Circle();
Shape shape2 = new Rectangle();
System.out.println(shape1.getArea());
System.out.println(shape2.getArea())
}
}
4.抽象类和接口
抽象类和接口是实现多态和代码复用的重要工具。抽象类是不能被实例化的类,它通常包含一些抽象方法,这些方法没有具体实现,需要由子类来实现。接口则是一种特殊的抽象类,它只包含常量和抽象方法,用于定义一组行为规范。
学习心得
在学习过程中,我理解了抽象类和接口的区别和联系,并学会了如何使用它们。例如,在设计一个航空货运管理系统的支付方法时,定义一个Payment接口,包含pay()方法,不同的支付方式(如支付宝、微信支付)实现该接口,通过多态实现不同的支付逻辑。
示例代码
点击查看代码
public interface Payment {
void pay(double amount);
}
public class Alipay implements Payment {
@Override
public void pay(double money) {
System.out.println("支付宝支付:" + money);
}
}
public class WechatPay implements Payment {
@Override
public void pay(double amount) {
System.out.println("微信支付:" + money);
}
}
public class Test {
public static void main(String[] args) {
Payment payment1 = new Alipay();
Payment payment2 = new WechatPay();
payment1.pay(50);
payment2.pay(100);
}
}
5.集合框架
Java集合框架提供了一组用于存储和处理对象的接口和类。在学习过程中,我掌握了常用集合类(如ArrayList、LinkedList、HashMap等)的使用方法和特点,并理解了集合框架的层次结构。
学习心得
通过PTA作业和实验,我学会了如何根据实际需求选择合适的集合类,例如,当需要频繁的插入和删除操作时,选择LinkedList;当需要快速查找时,选择ArrayList。同时,我也了解了集合框架的一些高级特性,如迭代器、泛型等。
6.异常
异常处理是Java编程中用于处理运行时错误的机制。在学习过程中,我理解了异常的概念和分类,掌握了try-catch-finally语句的使用方法,并学会了如何自定义异常类。
学习心得
通过实验和PTA作业,我学会了如何在程序中合理地捕获和处理异常,避免程序因异常而崩溃。例如,在文件操作中,可能会抛出IOException,通过捕获该异常并进行相应的处理,可以保证程序的健壮性。
7.javaFX
JavaFX是用于构建富客户端应用程序的框架。在课程中,我们对JavaFX进行了初步的了解和实践。
学习心得
通过实验,我学会了如何使用JavaFX创建简单的图形用户界面,如窗口、按钮、文本框等,并能够实现一些基本的交互功能。虽然我对JavaFX的掌握还不够深入,但通过学习,我对图形用户界面的设计和实现有了初步的认识。
示例

三、 踩坑心得
在学习Java面向对象设计的过程中,我也遇到了一些问题和挑战,以下是一些走过的弯路和吸取的经验教训:
- 需求理解不清楚:电梯调度题目的错误以及PTA题目中的格式不对都是因为没有完全明白需求。
- 在使用多态时,我有时会忘记调用子类的构造方法来初始化子类的属性。这导致了在运行时出现NullPointerException或其他异常。
- 在异常处理中,我有时会忘记在try块中捕获异常,导致程序在运行时崩溃。此外,我也曾错误地使用catch块捕获了所有异常,而没有具体指定异常类型,这使得调试变得困难。
- 面向对象设计的六大原则不能够熟练运用,例如在类的设计中有些类并没有遵循单一职责原则,对依赖倒置原则的理解不够深刻。
- 正则表达式的错误使用导致匹配错误的字符串最终出现答案错误,有时甚至会出现异常等。
- 类设计的不合理,如类与类之间的耦合性过高,导致后续的重构如PTA中的航空货运管理系统,和实验中的大象进入电梯的程序都是一步步重构实现的,而类设计的不合理就需要重新设计类浪费大量的时间。
- JavaFX的布局管理:在使用JavaFX时,我最初对布局管理的理解不够深入,导致界面布局混乱。通过学习和实践,我逐渐掌握了BorderPane、GridPane等布局管理器的使用方法,能够设计出更加美观和实用的界面
四、 改进建议
- 增加实践项目:建议增加更多的实践项目,让学生能够在实际项目中应用所学知识,提高解决实际问题的能力。
- 增加案例分析:增加更多的实例讲解,让我们更好地理解所学知识的应用场景。
- 加强互动交流:可以组织一些小组讨论和交流活动,让我们互相学习和分享经验。
五、 总结
这门课程不仅教会了 Java 编程技术,更重要的是培养了面向对象的思维方式。从最初只会 “堆砌代码” 到现在能够考虑 “封装、扩展、复用”,每一次作业和实验都是一次思维的升级。印象最深刻的是完成航空货运管理系统的过程 —— 从类的设计到界面实现,从数据存储到异常处理,整个系统的搭建让我体会到了软件开发的系统性和复杂性。
未来的学习中,我需要在以下方面加强:
- 设计模式的深入应用:目前只掌握了基础模式(如工厂模式、单例模式),需要学习更多设计模式以优化代码架构。
- Java 高级特性:如 Lambda 表达式、Stream API、并发编程等,提升代码效率和性能。
- 面向对象设计原则的熟练运用:设计类时要机场考虑到单一职责原则,开闭原则等面向对象设计六大原则,降低类与类之间的耦合度。
- 集合框架的练习:将存储、管理和操作对象组融会贯通。
- 深入学习JavaFX,以提高自己在图形用户界面设计和开发方面的能力,如学习高级布局管理和事件处理。
感谢这门课程带来的成长,它不仅是 Java 编程的入门,更是软件开发思维的启蒙。面向对象的思想将成为我未来编程之路的基石,而那些踩过的 “坑”,也将成为宝贵的经验财富。

浙公网安备 33010602011771号