zoukankan      html  css  js  c++  java
  • (Object-C)学习笔记(二) --OC语言面向对象和基本概念

      现在的高级编程语言大部分都是面向对象编程的。

      那么什么是面向对象呢?我用我的见解举个例子:假设你正在用word编辑这么两件事 1.一个人走到桌子前面(1)拿起可乐(2)打开盖子(3)喝光(4)放下瓶子(5)。 2.一个人走到桌子前面(1)拿起点心(2)吃了(3)。 

      那么如果是用面向过程的方式来编程,第一件事是一个大括号,里面写着这5步。第二件事是一个大括号,里面写着3步。写这么两件事全部手写,不允许黏贴复制,一共8步。

      如果使用面向对象的方式来编程,把这个过程分为了动作和物品,把这些步骤写出来但是放到一边,需要什么就复制粘贴什么,相同的动作或者物品不需要写两遍。上面两件事一共写7步就行,当然如果你第二件事喝雪碧的话,你只需要5步+一瓶雪碧就行了。

    1.面向过程

      数据结构+算法

    2.面向对象

      属性+行为

      为什么使用面向对象的编程思想

      使用面向对象的编程思想,可以大大降低开发周期和成本,提高开发效率,提升代码的复用性,降低开发难度,提高了代码的可读性和可维护性。

    什么是类

      面向对象的重要概念。类是一个抽象的概念,我们常说的一类人,就是这个意思。比如说学生,工人这都是代表的一大部分人。具体到OC语言中,类(class)是一对相关联的.m .h文件(名字相同)。这一对就是一个类。

    什么是对象

      对象就是一个实例化的类,比如学生当中有一个张三,跟抽象化的学生不一样,你可以准确知道张三的ID、姓名、身高、体重等。

    变量

      在.h里面声明的叫做公共变量,在.m里面声明的叫做私有变量。

      @public 可以在任意位置访问

      @package 可以在包内部访问

      @protect 可以在本类及子类中访问

      @practice 只能在本类在访问

    成员变量和实例变量

      在类中声明的变量就叫成员变量,当类被实例化成一个实例时,这个实例里的变量就叫实例变量。

    方法

      方法是类的一部分,代表类可以干什么,类似于c的函数。

      方法定义:-(void)show; 多参方法:-(void)show:(NSString)name andAge:(int)age;

    括号里面的void是返回值 返回什么类型的 写什么类型

    实例方法与类方法

      -开头的是实例方法,一般只能由实例对象调用。+开头的是类方法,由类名直接调用。

    什么是属性

      属性有三部分组成,分别是setter和getter方法,以及一个存放值的实例变量。在如今的iOS版本中,setter和getter是隐藏的,我们定义属性时 只在.h或.m中 

    @property NSString* name;  定义就行.

    示例代码:

     

    
    
     1 #import <Foundation/Foundation.h>
     2 
     3 @interface TRStudent : NSObject
     4 @property NSString* name;
     5 @property int age;
     6 @property int ID;
     7 @property NSString* address;
     8 -(id)initWithName:(NSString*)name andAge:(int)age andID:(int)ID andAddress:(NSString*)address;
     9 -(void)show;
    10 @end
    
    
    
    
     1 @implementation TRStudent
     2 -(id)init
     3 {
     4     if (self=[super init]) {
     5         self.name=@"liu";
     6         self.age=45;
     7         self.ID=123456;
     8         self.address=@"趵突泉";
     9     }
    10     return self;
    11 }
    12 -(id)initWithName:(NSString *)name andAge:(int)age andID:(int)ID andAddress:(NSString *)address
    13 {
    14     if (self=[super init]) {
    15         self.name=name;
    16         self.age=age;
    17         self.ID=ID;
    18         self.address=address;
    19     }
    20     return self;
    21 }
    22 -(void)show
    23 {
    24     NSLog(@"%@ %d %d %@",self.name,self.age,self.ID,self.address);
    25 }
    26 @end
    
    
    1 int main(int argc, const char * argv[]) {
    2     @autoreleasepool {
    3         TRStudent *trs=[[TRStudent alloc]init];
    4         [trs show];
    5         TRStudent *trs1=[[TRStudent alloc]initWithName:@"wang" andAge:15 andID:1234 andAddress:@"红叶谷"];
    6         [trs1 show];
    7     }//cocoa  .h .m 分开放的
    8     return 0;
    9 }
    We're here to put a dent in the universe!code改变世界!-----------------------------------------------------by.不装b就无法活下去的晨曦
  • 相关阅读:
    JavaWeb下载文件response
    jQuery的prop和attr的区别,及判断复选框是否选中
    【转载并整理】mysql 创建用户,数据库
    【转载】mysql配置模板(my-*.cnf)参数详细说明
    【转载】mysql 热备份
    【转载】centos 安装及配置 mysql5.5.3
    【微信开发】简单的微信分享小插件
    一些http或https请求的参数,什么情况下需要urlencode编码
    sublime在混杂的log数据中提取你想要的内容
    聊聊分布式事务【转】
  • 原文地址:https://www.cnblogs.com/firstaurora/p/5185503.html
Copyright © 2011-2022 走看看