黑马程序员——【黑马视频笔记】OC语言基础之代码的封装

 

1.封装的注意点

   1:  // 成员变量尽量不要用@public
   2:      // @public
   3:      int age;

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

 

   1:    //@public
   2:      // 只读(readonly):只允许外界访问我的no,不允许外界修改我的no
   3:      int no; // 只需要提供get方法

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

 

2.get、set方法

   1:  set方法
   2:   1.作用: 提供一个方法给外界设置成员变量值,可以在方法里面对参数进行相应过滤
   3:   2.命名规范:
   4:   1> 方法名必须以set开头
   5:   2> set后面跟上成员变量的名称,成员变量的首字母必须大写
   6:   3> 返回值一定是void
   7:   4> 一定要接收一个参数,而且参数类型跟成员变量类型一致
   8:   5> 形参的名称不能跟成员变量名一样

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

   1:  get方法
   2:   1.作用:返回对象内部的成员变量
   3:   2.命名规范:
   4:   1> 肯定有返回值,返回值类型肯定与成员变量类型一致
   5:   2> 方法名跟成员变量名一样
   6:   3> 不需要接收任何参数

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

   1:   
   2:  // set方法的实现
   3:  - (void)setAge:(int)newAge
   4:  {
   5:      // 对传进来的参数进行过滤
   6:      if (newAge <= 0)
   7:      {
   8:          newAge = 1;
   9:      }
  10:      
  11:      age = newAge;
  12:  }
  13:   
  14:  - (int)age
  15:  {
  16:      return age;
  17:  }

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

3.成员变量的命名规范:

一定要以下划线 _ 开头

  作用:

  1.让成员变量和get方法的名称区分开

  2.可以跟局部变量区分开,一看到下划线开头的变量,一般都是成员变量

 

例子

   1:  // sex的set和get方法
   2:  - (void)setSex:(Sex)sex;
   3:  - (Sex)sex;
   4:   
   5:  // no的set和get方法
   6:  - (void)setNo:(int)no;

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

4.封装的实际例子

   1:  /*
   2:   4.设计一个成绩类
   3:   * C语言成绩(可读可写)
   4:   * OC成绩(可读可写)
   5:   * 总分(只读)
   6:   * 平均分(只读)
   7:  */
   8:  #import <Foundation/Foundation.h>
   9:   
  10:  @interface Score : NSObject
  11:  {
  12:      int _cScore; // C语言成绩
  13:      int _ocScore; // OC成绩
  14:      
  15:      int _totalScore;// 总分
  16:      int _averageScoe; // 平均分
  17:  }
  18:   
  19:  - (void)setCScore:(int)cScore;
  20:  - (int)cScore;
  21:   
  22:  - (void)setOcScore:(int)ocScore;
  23:  - (int)ocScore;
  24:   
  25:  - (int)totalScore;
  26:  - (int)averageScore;
  27:   
  28:  @end
  29:   
  30:  @implementation Score
  31:  - (void)setCScore:(int)cScore
  32:  {
  33:      _cScore = cScore;
  34:      
  35:      // 计算总分
  36:      _totalScore = _cScore + _ocScore;
  37:      _averageScoe = _totalScore/2;
  38:  }
  39:  - (int)cScore
  40:  {
  41:      return _cScore;
  42:  }
  43:   
  44:  - (void)setOcScore:(int)ocScore
  45:  {
  46:      _ocScore = ocScore;
  47:      
  48:      // 计算总分
  49:      _totalScore = _cScore + _ocScore;
  50:      _averageScoe = _totalScore/2;
  51:  }
  52:  // 监听成员变量的改变
  53:   
  54:  - (int)ocScore
  55:  {
  56:      return _ocScore;
  57:  }
  58:   
  59:  - (int)totalScore
  60:  {
  61:      return _totalScore;
  62:  }
  63:  - (int)averageScore
  64:  {
  65:      return _averageScoe;
  66:  }
  67:  @end
  68:   
  69:   
  70:  int main()
  71:  {
  72:      Score *s = [Score new];
  73:      
  74:      [s setCScore:90];
  75:      [s setOcScore:100];
  76:      
  77:      [s setCScore:80];
  78:      
  79:      
  80:      int a = [s totalScore];
  81:      
  82:      NSLog(@"总分:%d", a);
  83:      
  84:      return 0;
  85:  }

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

时间: 2024-10-25 14:37:32

黑马程序员——【黑马视频笔记】OC语言基础之代码的封装的相关文章

黑马程序员_Java环境搭建及语言基础

- - - - android培训.java培训.期待与您交流!- - - - - - JRE和JDK JRE:Java Runtime Environment,java运行环境. JDK:Java Development Kit,java开发工具包. 使用JDK开发java程序,交给JRE运行. JDK下载和安装 http://www.oracle.com/technetwork/java/javase/downloads/index.html JDK的目录结构 目录/文件名 功能说明   b

黑马程序员——JAVA学习笔记二(语法基础)

1,     Java程序都是以类的形式存在的,所以需要告诉虚拟机需要加载类的位置,那么可以设置classpath变量.classpath变量如果有;,则表示还会在当前目录查找,没有;则不会在当前目录查找. 当然如果没有classpath也会在当前目录查找. 2,    rd删除目录,加/S可以删整个目录,Windows从里向外删除. 3,    一个文件只有一个public类,文件名必须和类名相同,如果不是友好类,则不需要同名. 4,    JAVA一共有50个关键字 关键字是电脑语言里事先定

黑马程序员_OC学习笔记之Foundation框架集合类

OC--集合类 1.OC集合类包括NSArray,NSSet,NSDictionary都是以面向对象的方式操作数组,而且OC数组不像C语言中的数组只能存放同一种数据类型,它可以存放任意类型的对象,但是不能存放非OC对象类型如基本数据类型int,struct,enum等 2.OC数组是以对象的方式存在,因此在创建的时候需要为创建的对象前面加* 3.NSArray数组一旦创建就决定了是不是可变,而且永远是可变或不可变 4.NSArray数组和子类NSMutableArray的基本操作: 1>使用NS

【黑马程序员】————简单的OC程序

一.  OC简介 C语言的基础上,增加了一层最小的面向对象语法 完全兼容C语言 可以在OC代码中混入C语言代码,甚至是C++代码 可以使用OC开发Mac OS X平台和iOS平台的应用程序 二.  OC语法预览 1.      关键字 基本上所有关键字都是以@开头 下面列举一些常见的关键字,看一眼就行了,不用去翻资料查找它们的含义 @interface.@implementation.@end @public.@protected.@private.@selector @try.@catch.@

黑马程序员-C学习笔记之scanf

---------------------- IOS开发.Android培训.期待与您交流! ---------------------- 一.scanf函数介绍 这也是在stdio.h中声明的一个函数,因此使用前必须加入#include<stdio.h>.调用scanf函数时,需要传入变量的地址作为参数,scanf函数会等待标准输入设备(比如键盘)输入数据,并且将输入的数据赋值给地址对应的变量. 函数原型为:int scanf(const char*format,...); 二.scanf用

黑马程序员_OC学习笔记之description方法和sel

OC--description方法 1.Description方法包括类方法和对象方法.(NSObject类所包含) -description(对象方法) 2.使用NSLog和@%输出某个对象时,会调用对象的description方法,并拿到返回值进行输出. +description(类方法) 3.使用NSLog和@%输出某个对象时,会调用类对象的description方法,并拿到返回值进行输出,把整个对象一次性打印出来,打印对象使用%@. 4.使用@%打印对象如(“@%”,P)默认打印输出为<

黑马程序员_OC学习笔记之@property和@synthesize

[objc] view plaincopyprint? <span style="font-size:24px;">#import <Foundation/Foundation.h> @interface Person : NSObject { int _age; int age; int _height; int height; int _weight; int weight; int _money; int money; } @property int ag

黑马程序员——Foundation学习笔记(NSSet和NSMutableSet)

==========android培训.ios培训.java培训.期待与您交流========== 一.NSSet: NSSet NSSet里面存储的元素没有顺序,NSArray中的元素有顺序. NSSet *s = [NSSet set]; // 创建一个空的Set,永远是空,不可变. NSSet *s2 = [NSSet setWithObjects:@"jack",@"rose",nil]; NSString *str = [s2 anyObject]; //

黑马程序员-C学习笔记之预处理指令

---------------------- IOS开发.Android培训.期待与您交流! ---------------------- 一.什么是预处理指令 预处理指令是告诉编译器在编译之前预先处理的一些指令,有宏定义,文件包含,条件编译. 预处理指令一般以 # 号开头,可以出现在文件的任何地方,作用于整个文件. 二.宏定义 宏定义分不带参数的和带参数的宏定义.     1?不带参数的宏定义 #import <stdio.h> #define AGE 10 // 宏名用大写 int ma