oop课堂笔记-对象和类

当我们要计算一个圆的面积?

C语言:

double PI=3.1415926;
typedef struct Circle
{
    double radius;
}Circle;
double calcArea(Circle *circ)//传指针!比较小!
{
    return PI*circle->radius*circle->radius;
}

主程序专门有一个文件的!

头文件本质:抽象掉只有外面要使用的东西!是一种接口。

steps:

1. 抽象出一个概念

2. 要抽象一个什么样的结果

抽象的结果是其能提供什么能力,而不是什么数据。

对象是有状态的-不同的具体的值

若一个对象没有状态-very interesting

类的名字、状态、行为

缺省的构造函数:当你没有任何构造函数,编译器会去帮你生成一个

写默认构造函数的情况:本身有默认值

动态对象创建才写缺省构造函数,没有的话就不写了。

默认构造函数不能有返回值(只能返回这个类型的)

默认值:对所有引用类型为空(当程序帮你生成构造函数)。

(但很容易出问题捏)

不初始化就不能用!使用类中函数之前进行初始化。

一样的行为:使用static!

(每一组实例有一组状态:不能用static)

ztg:要布置一个任务,有一个可能空的东西,那得把你们气死

(ztj:拍手大笑)(回忆起了zyq lab的痛苦回忆)

防止空指针:Optional-语言设计是个bug

class 里面可以不赋初值,但局部变量里面必须赋初值!

静态和全局类似。

C语言要释放内存(不然内存会泄露)

Best Thing of Java: Garbage Collection

随机数发生器:Random().

Random.nextInt()

val r3=Random(3)

时间:Date()

没有带static的:实例变量(圆的半径一定是和一个特定的圆有关系的)

带static的:全局变量

静态的:写类的名字来区分

属性和行为绑定

属性和方法是非静态的,全局/常量的才使用static


Mar.19th

可见性:对另一组可见?

封装:(1)我&非我 (2)package  (3)继承关系

private:只有自己能看到   public:所有人可见

啥都没写:package 可访问

能漂亮地编出来时,给外面看到的越少越好

内部的静态和非静态方法都能访问

传参数给方法:直接传

java只能传值,因为其没有指针!

其他只能传引用

设计数据类型,可能设计只能使用引用类型(比如说自己设计一个数组-打个包放进去,自己做)

基本数据类型放进去会自动变成引用类型!

构造出引用,无需缺省构造函数

构造私有属性,但可以在外面放set


静态变量:引用静态名字才能看到

指明引用不可变:加final


Thinking in Objects 

抽象和封装

eg:

抽象:圆就是要获取面积和周长

封装:把不要的东西都藏起来

类之间的关系:聚合和组合

eg:大楼中有多个房间,房间中有多个桌子

删掉Building删掉Room

删掉Room的时候要搬走桌子,不然会给警告

对象组合:

互相引用:组合成更大的对象

继承

扔一个便捷(oop写法的)随机数:

return getRandomCharacter(range[index][0],range[index][1]);
//封装成类->对象化!作为对象传来传去
public class RandomCharGenerator
{
    public static RangedCharGenerator digit=new RangedCharGenerator('0','9');
    //为什么是static:全局函数,与当前类并没有很多关系
}

这样比较安全,不容易因为奇怪的输入导致报错

oop:如何compose?

返回location或点的集合

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值