摘要:
继承1.在Oc中每个类对象最开始的位置都会有一个isa指针,该指针指向一块内存区域,分发表中先找本类,再找父类方法.2. self在实例方法中表示指向当前对象指针,在类方法中需要[self class]。用“_下划线”访问没调用get set方法,加self.后实际上调用了其成员的get set方法... 阅读全文
摘要:
纵向关系:继承(泛化):子类is a 父类。鸟和动物实现:唐老鸭和说话横向关系:强弱程度依次为:组合>聚合>关联>依赖依赖:依赖:使用关系(工具)。代码中实现依赖关系时,通常将一个类的对象作为另一个类的作方法参数、方法中的局部变量、或者静态方法调用。单向。动物和水关联:结构关系(来往)。代码中实现关联关系时,通常将一个类的对象作为另一个类的属性。单向、双向。1对多,多对多,1对1。企鹅和气候复合@class聚合:has a(有的关系)。整体和部分不具同一生命周期。代码中实现关联关系时,通常将一个类的对象作为另一个类的属性。雁群和大雁组合(强聚合):has a(有的关系)。整体 阅读全文
摘要:
用处:当需要创建很多新产品的时候可用到。中间采用了反射机制,以返回对象的形式实现。一、定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类。二、何时适⽤工⼚方法 1、编译时⽆法准确预期要创建的对象的类; 2、类想让其子类决定在运行时创建什么; 3、类有若干... 阅读全文
摘要:
将低层(即没有复杂逻辑的)东西抽象出来当接口,让其去和高层发生关系。定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。问题由来:类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来达成。这种场景下,类A一般是高层模块,负责复杂的业务逻辑;类B和类C是低层模块,负责基本的原子操作;假如修改类A,会给程序带来不必要的风险。解决方案:将类A修改为依赖接口I,类B和类C各自实现接口I,类A通过接口I间接与类B或者类C发生联系,则会大大降低修改类A的几率。 依赖倒置原则基于这样一个事实:相对于细节的多变性,抽象的东西要稳定的多。以抽象为基础搭 阅读全文
摘要:
封装:就是包装。1.封装隐藏类内部的实现,稳定类外部接口。属性封装了实例变量。方法封装了具体实现代码。类封装了属性和方法。2.封装好处使用更简单,开发速度更快。不再象面向过程编写零散。变量更安全。类里的参数隐藏了。可以隐藏实现细节。继承:是一个类拥有另一个类的某些特征和行为的特性。1.好处:代码可复... 阅读全文
摘要:
1.方法冒号属于方法的一部分-代表实例方法,必须通过对象调用的方法。+代表静态方法(类方法)。2.类方法的特点与用处:通过类就可以直接调用类方法特点:静态变量用在对象的语言中:当静态变量声明在类中,这个静态变量归该类所有,同时这个类产生的对象共享(可设置和访问)该变量。静态变量只初始1次,必须有默认... 阅读全文
摘要:
1定义游戏相关类: 1. 怪物类:当前生命值,原始生命值,当前位置,原始位置,攻击力,防御力,移动行为,攻击英雄行为,逃跑行为... ...。 2. 关卡类:关卡名称,关卡编号,关卡时间,关卡怪物们。 3. 英雄类:角色名称,等级,经验,当前生命值,原始生命值,当前位置,原始位置,移动行为,攻击怪物... 阅读全文
摘要:
1.设置器、访问器作用:隐藏成员变量,保证成员变量安全。添加业务逻辑,作正确性检验(例子:年龄必须正整数。某项活动需要定时对积分条件修改)。控制读写性。2.设置器、访问器实现方法(手动实现)-(void) setAge:(int)newAge{_age = newAge;}-(int) age{re... 阅读全文
摘要:
在OC中变量是有默认值的,可以通过重写init函数给予变量赋初值,init的返回类型是对象。类是抽象的,它泛指某一堆事物,是一组具有相同特征属性和行为的对象集合。对象(实例)是类的具体实现,对象是一个个体。对象在内存中,对象间没有任何联系。类由@interface和@implement两部分组成看,... 阅读全文
摘要:
1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 int main(void){ int a[10][10],i,j; for(i=0;i=i;j--)// printf("%2c",'*');/*两个空格*/ for(j=0;j#include #include #include struct Stuinfo{ char ID[4]; char NAME[10]; ... 阅读全文