七、类中的封装

原创 2017年01月03日 01:00:15

一、类的组合:

(1).如电脑类由键盘类、鼠标类、显示类、cpu类、memory类等类组成
(2).类通常可以分为以下两个部分:
a.类的实现细节
b.类的使用方式(用户一般只关心怎么使用,而不会关心内部到底如何实现)

二、类的封装

(1).当使用类的时候不需要关心其实现细节
(2).当创建一个类时,才需要考虑其内部实现细节
(3).封装的基本概念:
a.并不是类的每个属性都是对外公开的
b.而一些类的属性是对外开放的
因此,需要在类的表示法中定义属性和行为的公开级别
c++中类的封装:
成员变量(表示类的属性)
成员函数(表示类的行为)
在c++中可以给成员变量和成员函数定义访问级别
public:成员变量和成员函数可以在类的内部和外界访问和调用
private:成员变量和成员函数只能在类的内部被访问和调用
类成员的访问属性:
struct Girl : human
{
private://冒号后面的都是私有的,外界无法访问
int age;
piblic://外界可以访问
void play()
{
printf(“hello\n”);
}
}

struct Boy : human
{
public:
int age;
void play()
{
printf(“hello\n”);
}
}
main 相对类来说就是外界。

三、类成员的作用域:

(1).类成员的作用域都只在类的内部,外部无法直接访问
(2).成员函数可以直接访问成员变量和调用其它成员函数,但外部只能访问public成员
(3).c++中用struct定义的类的所有成员默认为public,而class定义的磊默认是private的

#include<iostream>
using namespace std;
class student
{
private:
    int age;
public:
    void fun()
    {
        age = 50;
        cout<<"agg = "<<student::age<<endl;
    }
};
int main()
{
        student liming;
        liming.fun();//fun函数可以访问本类中的成员
        //liming.age = 25;//这里会报错。无法访问private成员
        getchar();
        return 0;
}

四、第一个面向对象的实现:

要求:1.提供setOperator函数设置运算类型,如加、减、乘、除
2.提供setParameter函数设置运算参数,类型为整型
3.提供result函数进行运算,其返回值表示运算合法性,通过引用参数返回结果。
Operator.h:

#ifndef _OPERATOR_H_
#define _OPERATOR_H_
class Operator
{
private:
    char Opm;//操作符
    double m1,m2;//操作数
public:
    bool setOperator(char c);//设置操作符
    void setParameter(double d1, double d2);//设置操作数
    bool result(double& r);//计算并且返回结果

};
#endif

Operator.cpp:

#include "Operator.h"
#include<iostream>
using namespace std;
bool Operator::setOperator(char c)//注意指定是那个类的函数
{
    bool ret = true;
    if( ('+' == c) | ('-' == c) | ('*' == c) | ('/' == c) )
    {
        Opm = c;
    }
    else 
    {
        ret = false;
    }
    return ret;
}
void Operator::setParameter(double d1, double d2)
{
    m1 = d1;
    m2 = d2;
}
bool Operator::result(double& r)//利用引用来存储结果
{
    bool ret = true;
     switch( Opm )
    {
        case '/':
            if( (-0.000000001 < m2) && (m2 < 0.000000001) )
            {
                ret = false;
            }
            else
            {
                r = m1 / m2;
            }
            break;
        case '+':
            r = m1 + m2;
            break;
        case '*':
            r = m1 * m2;
            break;
        case '-':
            r = m1 - m2;
            break;
        default:
            ret = false;
            break;
    }
    return ret;
}

main.c

#include<iostream>
#include "Operator.h"
using namespace std;
int main()
{
    double ret = 0;
    Operator op;//注意一定要记得用类来定义对象
    op.setOperator('+');
    op.setParameter(1,5);
    if(op.result(ret))
    {
        cout<<"the result is "<<ret<<endl;//打印结果为6
    }
    getchar();
    return 0;
}

以上程序,主函数只知道怎么使用,不知道其内部如何实现,这就是类的封装

七牛云Java API使用

1、引入jar com.qiniu qiniu-java-sdk 7.2.3 2、上传文件pac...
  • u012043557
  • u012043557
  • 2017年02月08日 16:37
  • 1233

七牛---关于JAVA SDK的各种Demo

覆盖上传:package demo; import com.qiniu.common.QiniuException; import com.qiniu.http.Response; import co...
  • netdxy
  • netdxy
  • 2015年12月08日 18:42
  • 14758

SQLite3封装类

源代码链接: http://www.adp-gmbh.ch/sqlite/wrapper.html /* SQLiteWrapper.h Copyright (C) 2004 René...
  • ldkcumt
  • ldkcumt
  • 2016年05月09日 17:14
  • 829

连接数据库的封装类

连接数据库的封装类 1.db.properties文件: driver="com.mysql.jdbc.Driver" url=jdbc:mysql://localhost:3306/mysql-...
  • miachen520
  • miachen520
  • 2016年07月20日 20:25
  • 459

php四个常用类封装

这4个常用类分别是Mysql类、分页类、缩略图类、上传类
  • baochao95
  • baochao95
  • 2016年07月28日 14:57
  • 6416

七牛云上传工具

鉴于csdn上传图片麻烦,一次只能一张,不能批量,有没有 sdk 或者 api 七牛云 有 sdk,且有cdn,因此就自己写了个上传工具,把 七牛云 当做 图床, 现在记笔记都是用 md写 Gi...
  • yangxuan0261
  • yangxuan0261
  • 2017年07月17日 14:44
  • 488

封装简单curl类

封装简单curl类
  • qq_36031499
  • qq_36031499
  • 2016年09月06日 08:58
  • 855

Java之七牛云工具类-yellowcong

七牛云和百度的bos相比较而言,百度的api更加的开放,而七牛连bucket的创建和删除的api都没有,而且在上传方面,还需要指定上传到那个区域的服务器,如果指定不对,就会报错,但是七牛云的api的图...
  • yelllowcong
  • yelllowcong
  • 2018年01月09日 18:38
  • 174

常用工具类封装

日期转换工具类 CommUtil.java [java] view plain copy package com.util;      import j...
  • Allen_liyu
  • Allen_liyu
  • 2017年02月06日 14:03
  • 446

封装篇——基类Activity

说说为什么要做基类Activity: 1. 统一风格,易调整(吐司、系统栏颜色、进入退出动画…) 2. 细化基础生命周期方法,减少代码量。 总而言之,封装就是为了更优雅的写代码。。。本文将从以下...
  • sinat_15877283
  • sinat_15877283
  • 2016年04月07日 16:14
  • 4182
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:七、类中的封装
举报原因:
原因补充:

(最多只允许输入30个字)