类的设计

类的设计

  c语言是面向过程的编程语言,c语言中的代码是"祈使句",强调的是存储数据,管理数据,程序员通过写代码操作cpu进行数据存储,数据管理

  oc语言是面向对象的编程语言,oc语言的代码是强调主语的语言.oc程序中,会添加很多可以接收消息的单元(对象),每个单元具有一个单独的功能,这些单元相互配合,完成一个完整的应用程序

  oc语言(objective-c)是ios应用开发的核心语言 

  [oc的用途]

    oc语言可以用来编写mac os操作系统

    oc语言可以用来编写基于mac os系统的应用程序

    oc语言可以用来编写ios操作系统

    oc语言可以用来编写基于ios操作系统的应用程序 

  同样是面向对象的语言有c++,java,oc

  公认的第一个面向对象的程序设计语言是 simula 67 语言,而c++就是基于 simula 67 诞生的新的面向对象的语言

  公认的第二个面向对象的程序设计语言是 smalltalk 语言,而oc,java就是基于 smalltalk 诞生的新的面向对象的语言 

  区别:

  [继承性]

    c++,支持多继承

    oc,java只支持单继承

  [动态性]

    c++,静态语言.在编译期,编译器会做静态语法检查,静态编译,运行起来的程序安全性比较高

    oc,动态语言.在程序运行期间可以根据字符串的内容决定调用哪个方法,加载哪个类,运行起来的oc程序灵活性较高

 

一.类和对象

  通过上面的了解,知道oc程序中充斥着各种各样的对象,而这些对象都要由对应的类来创建

  什么是类?什么是对象?类和对象的关系?

  [从生活角度看]

  类    对象

  人    你,我

  书    你桌上的那本书,我桌上的那本书

  球    你家的那个篮球,我家的那个篮球

  机器人  R2-D2,BB8

  [从代码角度看]

    [创建oc工程] 

      工程名:可以是中文,但是如果后期创建ios的工程,工程名必须是英文,因为ios工程使用中文工程名会产生一些无法预 料的错误

       语言类型:选择Foundation或者Objective-c 

    [oc工程的特点]

      #import <Foundation/Foundation.h>

      <1>自动包含Foundation.h头文件,Foundation.h文件写有常用的绝大部分头文件的包含语句
      <2>使用#import指令来包含Foundation.h头文件

        oc语言的程序是基于Foundation框架的,Foundation框架是oc的基础框架,脱离Foundation框架几乎无法写出一个 完整的ios应用程序

         import,可以保证被包含的头文件只被包含一次

      <3>oc默认的源代码文件是.m结尾的文件
      <4>oc特有的打印语句,和oc特有的字符串

        NSLog(@"Hello, World!");

        oc中打印字符串,使用NSLog函数

        oc中字符串,都是@开头的字符串(c中的字符串在oc中依然可以使用)

        [注] oc语言是完全兼容于c语言的

      <5>NSLog打印字符串,带有特殊的日志字符串
 

二.类的创建

  c语言的结构体和oc语言的非常相似

  oc中为了描述一个事物,使用类来实现

  c中的结构体:负责存储数据

  c中的函数:负责管理数据

  oc中的类,就是c中的结构体和函数的结合,既负责存储数据,又负责管理数据

//Person是我们创建的类的名字
//:表示继承关系
//NSObject是Person类的父类
//在oc语言中,NSObject类是所有其他类的直接/间接的父类
@interface Person : NSObject
{//年龄int age;//身高int height;//名字char name[20];
}//oc中的函数一般称为“方法”method
//oc中的方法,分两类:对象方法 和 类方法
//对象方法,减号(-)开头的方法,必须由对象进行调用
//类方法,加号(+)开头的方法,必须由类名进行调用
//吃饭
- (void)eat;//睡觉
- (void)sleep;@end

  通过File -> New -> File,使用模板创建的类都会自动生成.h和.m文件

  [类的.h文件] 类的声明,类的声明关键字:interface

    <1>添加成员变量

    <2>添加成员方法(方法的声明)

    [注] 类的声明,是由 成员变量 + 成员方法声明 构成

  [类的.m文件] 类的实现(具体指 方法的实现),类的实现关键字:implementation

    一个类一旦创建成功,就可以使用类名来创建对象

 

三.对象的创建 

    //创建对象方法一:Person *liyifeng=[Person alloc];//在堆区创建对象liyifeng=[liyifeng init];//给堆区的对象初始化//创建对象方法二:Person *linzhiling=[[Person alloc] init];//创建对象的同时给堆区初始化

 

四.方法的调用 

  //oc中的函数一般称为方法”method

  //oc中的方法,分两类:对象方法 类方法

  //对象方法,减号(-)开头的方法,必须由对象进行调用

  //类方法,加号(+)开头的方法,必须由类名进行调用

  调用类的方法必须用[]的方式

  [liyifeng eat]; 

  [注] 在同一个类的.h和.m文件中相互切换,ctrl+win+⬆️/⬇️

  [注] 在一个类的所有对象方法(减号方法)中,都可以直接使用成员变量

  一旦某个对象调用了对象方法,这个对象方法内部使用到的这些成员变量一定是属于这个对象的

  [ selfsuper ] 

-(id)init
{if (self=[super init]){//给当前对象的成员变量赋值(初始化)age = 10;height = 1.7;strcpy(name, "liyifeng");}return self;
}

    [注] self,代表当前对象(谁调用这个方法,self就代表谁)

    [注] super,super关键字用来调用父类的方法

转载于:https://www.cnblogs.com/firstsky/p/5892897.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/418051.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

b 树查找时间复杂度_心里没点 B 树。。。

B 树和红黑树的动画小吴还在制作当中&#xff0c;比想象中的复杂好多好多好多&#xff0c;今天先来一个图解版的 B 树。。。1 引言数据库的增删改查等操作是开发过程中最为常见也是尤为重要的&#xff0c;尤其是现在大数据的兴起&#xff0c;导致数据存储量急剧增加&#xff0c…

HTTP与会话的学习

一、HTTP协议 请求 1请求行 2、请求消息头 3、请求主体 响应 1、响应行 2、响应头 3、响应体 二、会话 HTTP无状态&#xff1a;服务器无法判断两次请求是否为同一个客户端发过来的。 因此通过会话跟踪来解决这个问题 Overrideprotected void service(HttpServletRequest req,…

袋鼠过河

一只袋鼠要从河这边跳到河对岸&#xff0c;河很宽&#xff0c;但是河中间打了很多柱子&#xff0c;略去。 这道题做完感觉也是原题&#xff0c;上周leetcode周赛的frog jump&#xff0c;前面还有几道jump的题&#xff0c;可以在leetcode上面搜索关键字jump。 frog jump题解链接…

3650m5服务器内存选择 ibm_各大品牌服务器租用价格表明细(附详细表单)

企业在进行IT建设的花费肯定不少&#xff0c;其中就包括了服务器租用。那如何租到性价比高的服务器&#xff1f;可以先了解一下各大品牌的报价情况&#xff0c;对比服务器租用价格表&#xff0c;找到价格合适的。不过也不可一味的遵从低价格&#xff0c;毕竟一分钱一分货也是一…

服务器内部转发以及客户端重定向概念的学习

一、服务器内部转发 一次请求响应的过程&#xff0c;对于客户端而言&#xff0c;内部经过了多少次转发是不知道的。 既地址栏不会变化 二、客户端重定向 客户端向上面的组件发送请求&#xff0c;组件里由response.sendRedirect方法指向demo07&#xff0c;于是服务器端里上面的…

Objective-C反射机制

Objective-C反射机制&#xff1a;是类似于Java的反射机制&#xff0c;这种动态机制可以让oc语言更加的灵活。这句话是对oc反射机制的初步认识&#xff0c;不过具体的怎么类似于java机制&#xff0c;怎么让oc更加的灵活&#xff0c;还得看下面的内容才能了解。 oc反射机制有三个…

cad幕墙下料lisp_石材幕墙屋面不锈钢角钢接闪带施工方法

石材幕墙屋面不锈钢角钢接闪带施工方法 摘要&#xff1a;石材幕墙屋面接闪带传统安装方法采用镀锌圆钢、不锈钢管明敷或加接闪小针等防雷方式&#xff0c;安装后易产生变形、幕墙漏水等问题&#xff0c;锈蚀会污染石材表面&#xff0c;影响建筑立面效果&#xff0c;清洗幕墙困…

JavaWeb中水果库存系统的学习

一、编辑和修改特定的信息 我们想达到的效果为&#xff1a;在页面点击一个水果&#xff0c;然后对这个水果进行编辑&#xff0c;之后更新页面。 第一步&#xff1a; 在水果名称这里增加一个超链接&#xff0c;点击可以跳转到编辑的页面中&#xff0c; th:href"{...}&qu…

删不干净_“我劝你别删前任微信”

大家好&#xff0c;我是Lady Bird.几天前&#xff0c;我收到了前任测试单删的群发信息。看到他头像边亮起的红色数字一的瞬间&#xff0c;我才意识到分手之后我们再也没联系过。可能在很多人看来&#xff0c;留着对方微信就是危险信号。说实话&#xff0c;这事儿要放几年前&…

对于事务的认识

例子&#xff1a;当转账操作的时候&#xff0c;A用户转账给B用户&#xff0c;希望的结果是&#xff1a;A扣了钱&#xff0c;B加了钱&#xff1b;或者是A转账失败&#xff0c;B的钱数也没增加。 事务的处理原则&#xff1a;要么都执行&#xff0c;要么都不执行 理解&#xff1a;…

ORACLE 查询所有表、外键、主键等信息

Select a.Owner 外键拥有者,     a.Table_Name 外键表,     c.Column_Name 外键列,     b.Owner 主键拥有者,     b.Table_Name 主键表,     d.Column_Name 主键列,     c.Constraint_Name 外键名,     d.Constraint_Name 主键名From User_Const…

Spring中IOC与DI的学习

1、IOC 1.1步骤 2、DI 依赖注入 2.1步骤&#xff1a; 其中的set方法是IOC容器来调用的 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/2001/…

Studio 一些使用

1,配置:W:\android_tools\AndroidStudio2.1.3_SDK\android-studio-ide-141.2456560-windows\android-studio\bin\idea.properties在文件最后添加:disable.android.first.runtrue2,配置SDK Configure->project Default->Project structruekeymap:快捷键Altenter 万能快…

Mybatis初始化配置

框架&#xff1a;jar包配置文件 一、添加依赖 在项目的pom.xml文件中添加mybatis依赖 <dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.1</version><scope>test</s…

用table展示树形结构数据_复习一下数据结构(二)——2.2 树形索引(23树)

普通树一个结点可以有多个孩子&#xff0c;但它本身只能存储一个元素&#xff0c;而二叉树结点最多只能有两个&#xff0c;这对于元素非常多的时候&#xff0c;会使得树的度或者是高度会非常大。这就使得内存存取外存的次数会增多&#xff0c;一旦涉及到外部存储设备&#xff0…

IO流详析

http://davidisok.iteye.com/blog/2106489转载于:https://www.cnblogs.com/dark-passion/p/5901333.html

Spring中整合mybatis包

一、把对应的依赖都添加上&#xff1a; mysql、mybatis、spring的依赖&#xff08;都是基础的&#xff09; <dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.17<…

dfa转正则表达式_从0到1打造正则表达式执行引擎(二)

本文原文地址https://blog.csdn.net/xindoo/article/details/106458165在上篇博客从0到1打造正则表达式执行引擎(一)中我们已经构建了一个可用的正则表达式引擎&#xff0c;相关源码见https://github.com/xindoo/regex&#xff0c;但上文中只是用到了NFA&#xff0c;NFA的引擎建…