03-封装练习

/*
4.设计一个成绩类
* C语言成绩(可读可写)
* OC成绩(可读可写)
* 总分(只读)
* 平均分(只读)
*/
#import <Foundation/Foundation.h>

@interface Score : NSObject
{
    int _cScore; // C语言成绩
    int _ocScore; // OC成绩

    int _totalScore;// 总分
    int _averageScoe; // 平均分
}

- (void)setCScore:(int)cScore;
- (int)cScore;

- (void)setOcScore:(int)ocScore;
- (int)ocScore;

- (int)totalScore;
- (int)averageScore;

@end

@implementation Score
- (void)setCScore:(int)cScore
{
    _cScore = cScore;

    // 计算总分
    _totalScore = _cScore + _ocScore;
    _averageScoe = _totalScore/2;
}
- (int)cScore
{
    return _cScore;
}

- (void)setOcScore:(int)ocScore
{
    _ocScore = ocScore;

    // 计算总分
    _totalScore = _cScore + _ocScore;
    _averageScoe = _totalScore/2;
}
// 监听成员变量的改变

- (int)ocScore
{
    return _ocScore;
}

- (int)totalScore
{
    return _totalScore;
}
- (int)averageScore
{
    return _averageScoe;
}
@end

int main()
{
    Score *s = [Score new];

    [s setCScore:90];
    [s setOcScore:100];

    [s setCScore:80];

    int a = [s totalScore];

    NSLog(@"总分:%d", a);

    return 0;
}

  

时间: 2024-08-17 09:53:27

03-封装练习的相关文章

『iOS开发』「OC」03 - 封装

一.面向对象和封装 面向对象的三大特性:封装(成员变量).继承和多态 在OC语言中,使用@interface和@implementation来处理类.   @interface就好像暴露在外面的时钟表面,像外界提供展示以及接口.@implementation就好像隐藏在时钟内部的构造实现,把具体的实现封装了起来. 二.set方法 在开发过程中,考虑到安全性要求,我们一般不在成员变量名前面使用@public.@protected等关键字修饰,而是使用Set方法来为对象提供成员变量的值.在set方法

[转载]如何在C++03中模拟C++11的右值引用std::move特性

本文摘自: http://adamcavendish.is-programmer.com/posts/38190.htm 引言 众所周知,C++11 的新特性中有一个非常重要的特性,那就是 rvalue reference,右值引用. 引入它的一个非常重要的原因是因为在 C++ 中,常常右值,通俗地讲"在等号右边的"临时变量或者临时对象,我们是无法得到它的修改权限的. 由于类的构造和析构机制,往往产生的临时变量或临时对象的拷贝构造及析构,会带来不少的时间.资源消耗. 也同样由于这样的限

【Unity】基于MVC模式的背包系统 UGUI实现

本文基于MVC模式,用UGUI初步实现了背包系统. 包含点击和拖拽两种逻辑,先献上源代码,工程和分析稍后补充. Model 层 using UnityEngine; using UnityEngine.UI; using System.Collections; using System.Collections.Generic; /// <summary> /// 脚本功能:MVC模式--Model层,定义物品结构,保存物品数据 /// 添加对象:Bag 背包(Canvas下的空对象) ///

&lt;JAVA - 面向对象(一)&gt;

01递归: package GUIJIN_01_recursive; import java.util.Scanner; /** * 递归: * 5的前几项之和: (1~5的和) * 1+2+3+4+5=15 * 5: 5+4+3+2+1 * 4 = 5 - 1 * 3 = 4 - 1 * 2 = 3 - 1 * 1 = 2 - 1 * 0 = 1 - 1 * 找规律: * 边界: 最后可加的数是1: * * @author 韦桂金 * */ public class recursiveDemo

黑马程序员--03.Object-C--揭开三大特性的神秘面纱之封装

------- android培训.java培训.iOS培训 期待与您交流! ---------- (由于博客园屏蔽了超链接所以地址发在这里:http://www.itheima.com) 今天咱俩来絮叨絮叨程序猿挂在嘴边面向对象的三大特性.Object-C既然也是面向对象的,那她肯定是具备这三大特性喽!话说这三大特性到底是什么呢? 面向对象的三大特性:封装.继承.多态. 接下来,咱们就开始叨叨一下,首先从封装开始. 封装,什么是封装?为什么要封装或者说封装的好处有哪些呢? 封装:封装就是将对象

PHP. 03 .ajax传输XML、 ajax传输json、封装

XML简介 XML 指可扩展标记语言 EXtensible Markup Language .设计的时候是用来传递数据的,虽然格式跟HTML类似 xml示例 <?xml version="1.0" encoding="UTF-8"?> <singer> <name>Jay</name> <age>18</age> <skill>Sing</skill> </sing

03 canvas帧动画封装案例

sprite.js /** * Created by suxiaoxia on 2017/7/15. */ function sprite(option) { this._init(option); } sprite.prototype = { /*初始化*/ _init:function (option) { this.x = option.x || 0; this.y = option.y || 0; this.w = option.w || 40; this.h = option.h ||

03 xml封装通信接口

<?php class Response_xml{ /** *按xml方式输出通信 *@param integet $code 状态码 *@param string $message 提示信息 *@param array $data 数据 * return string */ public static function xml_encoding($code,$message,$data=array()){ if(is_null($code)){ return ''; } $result=arr

数据库封装

数据库知识:sql不等号:!=或<>(如title<>'悉尼歌剧院'或title!='悉尼歌剧院'). 此博客待我将它学完:http://www.cnblogs.com/rainman/archive/2012/03/13/2393975.html. ADO.NET: C#中也可以用MessageBox:MessageBox.Show("用e.Message可以看到出错信息"); 此外Access有个sql视图(乱找都能找到),可供sql的执行(其where子句

[官方软件] Easy Sysprep v4.3.29.602 【系统封装部署利器】(2016.01.22)--skyfree大神

[官方软件] Easy Sysprep v4.3.29.602 [系统封装部署利器](2016.01.22) Skyfree 发表于 2016-1-22 13:55:55 https://www.itsk.com/forum.php?mod=viewthread&tid=362766&highlight=Easy%2BSysprep [官方软件] Easy Sysprep v4.3.29.602 [系统封装部署利器](2016.01.22) [Easy Sysprep]概述:Easy Sy