美文网首页
五、类和对象、程序设计方法

五、类和对象、程序设计方法

作者: 木鱼_cc | 来源:发表于2018-06-04 14:25 被阅读0次

1.struct

当单一变量无法完成描述需求的时候,结构体类型解决了这一问题。可以将多个类型打包成一体,形成新的类型。这是 c 语言中封装的概念。

#include <iostream>
using namespace std;
struct Date
{
  int year;
  int month;
  int day;
};

void init(Date &d)
{
cout<<"year,month,day:"<<endl;
cin>>d.year>>d.month>>d.day;
}

void print(Date & d)
{
cout<<"year month day"<<endl;
cout<<d.year<<":"<<d.month<<":"<<d.day<<endl;
}

bool isLeapYear(Date & d)
{
  if((d.year%4==0&&d.year%100 != 0) || d.year%400 == 0)
  return true;
  else  return false;
}

int main()
{
  Date d;
  init(d);
  print(d);
  
  if(isLeapYear(d))
  cout<<"leap year"<<endl;
  else
  cout<<"not leap year"<<endl;
  return 0;
}

对C语言中结构体的操作,都是通过外部函数来实现的。比如

void init(Date &d);
void print(Date &d);
bool isLeapYear(Date &d);

2.封装的访问属性

访问属性 属性 对象内部 对象外部
public 公有 可访问 可访问
protected 保护 可访问 不可访问
private 私有 可访问 不可访问

struct 中所有行为和属性都是 public 的(默认)。C++中的 class 可以指定行为和属性的访问方式。

封装,可以达到,对内开放数据,对外屏蔽数据,对外提供接口。达到了信息隐蔽的功能。

比如我们用 struct 封装的类,即知其接口,又可以直接访问其内部数据,这样却没有达到信息隐蔽的功效。而 class 则提供了这样的功能,屏蔽内部数据,对外开放接口。

3.用class去封装带行为的类

class 封装的本质,在于将数据和行为,绑定在一起然后能过对象来完成操作。

#include <iostream>
using namespace std;
class Date
{
  public:
     void init(Date &d);
     void print(Date &d);
     bool isLeapYear(Date &d);
  private:
      int year;
      int month;
      int day;
};

void Date::init(Date &d)
{
cout<<"year,month,day:"<<endl;
cin>>d.year>>d.month>>d.day;
}

void Date::print(Date &d)
{
cout<<"year month day"<<endl;
cout<<d.year<<":"<<d.month<<":"<<d.day<<endl;
}

bool Date::isLeapYear(Date &d)
{
   if((d.year%4==0 && d.year%100 != 0) ||d.year%400 == 0)
    return  true;
  else return false;
}

int main()
{
   Date d;
   d.init(d);
   d.print(d);
   if(d.isLeapYear(d))
      cout<<"leap year"<<endl;
   else cout<<"not leap year"<<endl;
  return 0;
}

Date 类 访问自己的成员,可以不需要传引用的方式

封装有2层含义(把属性和方法进行封装对属性和方法进行访问控制)

Public修饰成员变量和成员函数可以在类的内部和类的外部被访问。

Private修饰成员变量和成员函数只能在类的内部被访问。

4.struct和class关键字区别

  • 在用struct定义类时,所有成员的默认属性为public

  • 在用class定义类时,所有成员的默认属性为private

5.新手常犯错误

#include<iostream>
using namespace std;//c++的命名空间

class circle2
{
  public: 
    double m_r;
    double pi = 3.1415926;
  //千万不要这样子返回,必错,必须写在一个get函数中
    double area = pi*m_r*m_r;//面积
    double girth = 2 * pi * m_r;//周长
    double getArea();
};

double circle2::getArea(){
    double area = pi * m_r * m_r;
    return area;
}

int main(void)
{
   circle2 pi;
  cout<<"请输入半径"<<endl;
  cin>>pi.m_r;
  cout<<pi.area<<endl;//乱码
  cout<<pi.girth<<endl;//乱码
  pi.area = pi.getArea();
  cout<<pi.area<<endl;
  return 0;
}

1.png

因为m_r area girth的值在代码创建阶段就已经赋值了,m_r初始值是随机,所以area和girth都是随机,而改变了m_r了值,并不改变area和girth的值!所以会乱码!

6.程序设计方法的发展历程

面向过程的结构化程序设计方法

2.jpg 3.png 4.jpg 5.jpg 6.png 7.jpg 8.jpg

相关文章

  • 五、类和对象、程序设计方法

    1.struct 当单一变量无法完成描述需求的时候,结构体类型解决了这一问题。可以将多个类型打包成一体,形成新的类...

  • Java漫游记(二)----对象和类

    学习目标 描述类和对象 如何定义类以及如何创建对象 构造方法 引用变量和引用类型 定义对象的类 面向对象程序设计O...

  • 对象与类

    面向对象程序设计概述 OOP结构化过程化程序设计对象 类 类构造对象的过程称为创建类的实例封装实例域方法对象状态实...

  • javaScript高级程序设计读书笔记(六)

    面向对象的程序设计,面向对象的语言有类的概念,通过类创造多个具有相同的属性和方法的对象。 对象 属性类型 数据属性...

  • 《Java编程思想》笔记——面向对象和类

    1、面向对象程序设计简介 面向对象是一种程序设计方法,或者是程序设计规范,其基本思想是使用对象、类、继承、封装、多...

  • 《Java核心技术卷 I》之 Java对象与类

    Java对象与类 面向对象程序设计 面向对象程序设计,简称OOP,Java语言就是完全面向对象的。 类 类(cla...

  • 对象与类

    对象与类 Tags: Java核心技术卷I 面向对象程序设计概述 面向对象程序设计简单OOP。 类类是构造对象的模...

  • 你对vue的mixin的理解,有哪些应用场景

    一、mixin是什么 Mixin是面向对象程序设计语言中的类,提供了方法的实现。其他类可以访问mixin类的方法而...

  • vue的mixin的理解,有什么应用场景?

    一、mixin是什么 Mixin是面向对象程序设计语言中的类,提供了方法的实现。其他类可以访问mixin类的方法而...

  • Category实现原理

    依赖runtime 动态的将分类的方法和类方法合并到类对象和元类对象的方法列表中 (对实例对象 类对象 元类对...

网友评论

      本文标题:五、类和对象、程序设计方法

      本文链接:https://www.haomeiwen.com/subject/dpgesftx.html