《Java编程思想读书笔记》--对象导论

本文探讨了Java中面向对象编程(OOP)的核心概念,包括对象、类、继承、多态等,并讨论了OOP如何帮助开发者更好地组织代码、提高代码复用性和灵活性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

静下心来把编程思想从头到尾再读一遍,并做读书笔记记录下知识点。这是条必须静下心来走完的路。。。。。。

Java是建立在C++的基础上的,而java之于C的优势是不需要在解决问题时要考虑计算机的结构,只需要基于所要解决的问题的结构做考虑。既OOP允许根据问题来描述问题,而不是根据解决方案的计算机来描述问题。

而OOP的程序设计方式是
1、万物皆为对象。对象就是特殊的变量,它可以存储数据,还可以在它自身上执行

2、程序是对象的集合,他们通过发送消息来告知彼此所要做的。就是要把消息想象为对某个特定对象的调用请求。

3、每个对象都有自己的由其他对象所构成的存储。就是创建包含现有对象的新对象。

4、每个对象都拥有其类型。既每个对象都是某个类的一个实例。类就是类型。而每个类和其它类的区别是:可以发送什么消息给它。这边要明白一个概念,既类其实也是一种接口,每个对象是类这种接口的具体实现。

5、某个特定类型的所有对象都可以接收同样的消息。既子类可以接收父类的消息,也就是多态,这是OOP最强大的地方。

对象具有状态、行为和标识。也就是说对象在内存中都有一个唯一的地址。

我们需要将对象看成服务提供者,这个非常重要,我们需要把这个对象应该能提供的哪些服务都封装进来,也就是实现高内聚。但又需要遵循接口隔离原则,不能将这个类不应该具有的功能都一股脑放到一个类中,会导致高耦合。具体的需要去研究设计模式,这边就不展开了。

访问控制是为了设定一个边界,设定哪些是客户端程序员能够访问的,可以防止客户端程序员随意篡改我们的程序。我们只提供public的接口给客户端程序员,他们只需知道参数和返回值调用即可,这样我们修改了内部实现也不会影响客户端程序。这些讲的就是迪米特法则,既接口隔离原则。具体还是去看设计模式。它和接口隔离原则的区别就是,接口隔离原则关注的是接口,它希望每个接口的粒度最小,不要搞混了。
然后在java中public是对任何人都可访问,private是只有类创建者和类内部方法才能访问,protected比private多个子类可以访问。但子类不能访问private。当然还有默认的包访问权限,在我们不写访问指定词时它发挥作用。

组合是has-a关系,组合和聚合的区别是,聚合是set进来的,而组合是new好了的。组合和聚合更具灵活性,Spring这种利用java的多态,通过xml来配置组合具体对象的方式就提供的很大的灵活性,而继承则是高耦合的。所以优先考虑组合,当然如果需要多态来对同一个消息相应不同的处理方式就应该优先考虑继承。

关于继承is-a不想写太多,因为设计模式里应用很多,最重要的一个概念就是,继承不仅包含了现有类型的所有成员,更重要的是它复制了基类的接口,也就是说,所有发送给基类的消息同时也可以发送给子类。这里就是里氏替换原则。还有需要注意的是如果在基类中添加新方法,就要考虑用组合或者装饰模式,因为直接添加新方法会对以后代码维护造成困难。

java是单根继承的,终极父类是Object,对于垃圾回收来说,这种机制保证所有内存都有其类型,不会应无法确定其类型而陷入僵局。

java对象的生命周期,及创建和销毁。创建一个对象用new 类名() 实现。java是在堆上给对象分配内存,而通过在栈上定义一个类的应用指向这片内存。java只有这一种创建对象的方式,再加上单根继承,使得垃圾回收就简单的多。

java的异常处理保证所有错误都被处理,这回在以后的章节详细描述,需要注意的是异常处理的概念比面向对象还要早。

关于并发和Internet就留给以后吧,有好多书可以研究。

资源下载链接为: https://pan.quark.cn/s/9e7ef05254f8 行列式是线性代数的核心概念,在求解线性方程组、分析矩阵特性以及几何计算中都极为关键。本教程将讲解如何用C++实现行列式的计算,重点在于如何输出分数形式的结果。 行列式定义如下:对于n阶方阵A=(a_ij),其行列式由主对角线元素的乘积,按行或列的奇偶性赋予正负号后求和得到,记作det(A)。例如,2×2矩阵的行列式为det(A)=a11×a22-a12×a21,而更高阶矩阵的行列式可通过Laplace展开或Sarrus规则递归计算。 在C++中实现行列式计算时,首先需定义矩阵类或结构体,用二维数组存储矩阵元素,并实现初始化、加法、乘法、转置等操作。为支持分数形式输出,需引入分数类,包含分子和分母两个整数,并提供与整数、浮点数的转换以及加、减、乘、除等运算。C++中可借助std::pair表示分数,或自定义结构体并重载运算符。 计算行列式的函数实现上,3×3及以下矩阵可直接按定义计算,更大矩阵可采用Laplace展开或高斯 - 约旦消元法。Laplace展开是沿某行或列展开,将矩阵分解为多个小矩阵的行列式乘积,再递归计算。在处理分数输出时,需注意避免无限循环和除零错误,如在分数运算前先约简,确保分子分母互质,且所有计算基于整数进行,最后再转为浮点数,以避免浮点数误差。 为提升代码可读性和可维护性,建议采用面向对象编程,将矩阵类和分数类封装,每个类有明确功能和接口,便于后续扩展如矩阵求逆、计算特征值等功能。 总结C++实现行列式计算的关键步骤:一是定义矩阵类和分数类;二是实现矩阵基本操作;三是设计行列式计算函数;四是用分数类处理精确计算;五是编写测试用例验证程序正确性。通过这些步骤,可构建一个高效准确的行列式计算程序,支持分数形式计算,为C++编程和线性代数应用奠定基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值