使用类编程

在oop中使用类编程的一种模型就是客户/服务器模型。客户是使用类的程序。类声明(包括类方法)则构成了服务器,他是程序可以使用的资源。类中通过共有方式定义的类方法好比服务器的接口,服务器的责任是根据接口(类方法)准确地执行,服务器设计人员(定义类的程序员)只需在对应的接口下设计类实现的细节,而不需修改接口。客户则通过接口使用服务器的资源。这样程序员可以独立地修改服务器和客户,对服务器的修改就不会影响客户行为。

为了便于程序的修改和可读性,通常,一个程序分为三个文件,头文件和两个源文件。头文件用来声明类数据及其方法,一个源文件用于定义类的方法,也就是定义服务器接口的实现细节,这样把实现细节与声明分开叫做封装;另一个用于编写主函数,也就是编写客户的行为。

类的声明包括声明数据成员和类方法(也就是接口)。类数据通常为private型,主要是为了数据隐藏。也有将函数声明为private型的,通常用于类数据的内部处理,且要在声明的时候直接定义。private类型的数据只能通过public类型的类方法调用。在外部定义函数方法时,要使用作用域解析运算符(::)来标示函数所属的类。有了作用域解析运算符,我们就可以将不同的类方法的名称取为同一个。

在程序中使用类时,可以使用声明类变量或者使用new为类对象分配存储空间来创建类对象。在使用类方法时,要通过类对象来调用,此时要使用成员运算符据点(.)。

由于类的数据是private型,只能通过成员函数来访问。因此,在创建类变量时,就不能对其进行初始化。构造函数则用来将数据复制给数据成员。构造函数的名称与类名称相同(同时,构造函数的参数名不要与类成员名相同)。每个类可以通过函数重载创建多个同名的构造函数,但每个构造函数的参数列表必须不同。默认的构造函数没有参数。如果程序没有定义任何构造函数,编译器将为程序定义一个默认构造函数。每个类只能有一个析构函数,其名称为类名称前加上~。

如果需要创建同一个类的多个对象,则可以创建对象数组。对对象数组的初始化,应使用构造函数为每个元素进行初始化。若定义了多个构造函数,则可以对不同的元素使用不同的构造函数。

this指针:

类作用域:

抽象数据类型:

时间: 2024-10-10 13:17:41

使用类编程的相关文章

c++类编程的两个简单的例子

关于栈的数据结构:类的头文件定义 // stack.h -- class definition for the stack /******************************************************************/ #ifndef _STACK_ #define _STACK_ typedef unsigned long Item ; class Stack { private: enum { MAX = 10 } ; Item items[MAX]

python3 元类编程的一个例子

[引子] 虽然我们可以通过"class"语句来定义"类",但是要想更加细粒度的控制"类"的创建,要使用元类编程才能实现. 比如说我们要实现这样的一个约束.所有项目中用到的类都应该要为它定义的方法提供文档字符字符串.有两条可行 的路径 1):依赖工程师的自觉.自律 让他们在定义每一个方法的时候都为方法增加文档字符串, 2):通过元类来做一些 控制,如果工程师没有为方法提供文档字符,那么就直接报错,直到工程师为方法提供字符串为止. [实现1] 依赖工

C++类编程(一)

设计类时,考虑以下五点 1.构造函数初始化列表 2.函数该不该加const 3.参数传递尽量考虑用引用传递,考虑加不加const 4.返回用不用引用 5.数据尽量放在private,函数尽量放在public 一.构造函数 ①构造函数参数名不能与类成员名相同 ②只有当没有定义能和构造函数时,编译器才提供默认构造函数 ③两种定义默认构造函数的形式 1.给已有构造函数的所有参数提供默认值.Stock(const string & co="Error",int n=0,double d

基于C++的类编程总结

1. 类中public, protected, private这三个属性的区别: public意味着所有事物都能查询具有该属性的食物.(也即所有人可以在我不知情的情况下,查看我账户里还有多少钱). protected属性意味着只有我自己和我的子孙后代才能查我还有多少钱.private属性表明只有我自己才能查我自己账户里还有多少钱. class father { public: int publicmoney; protected: int protectedmoney; private: int

python元类编程

什么叫元类?   年轻人先不要在意这些细节.我们一步一步的来! 001. oop的世界里有一句话 "万物皆对象" class Person(object): name=None if __name__=="__main__": i=123 s="hello world" p=Person() print(type(i)) #<class 'int'> print(type(s)) #<class 'str'> print(

元类编程-- metaclass

#类也是对象,type创建类的类 def create_class(name): if name == "user": class User: def __str__(self): return "user" return User elif name == "company": class Company: def __str__(self): return "company" return Company #type动态创

娱教于乐!四大游戏类编程网站,学Python再也不枯燥无味了

前言 学习编程虽然对有些人来说是件乐事,但是对大多数人来说仍然是一件比较枯燥困难的事情.当然,面临这样困惑的人,并不是只有你一个,所以,这世界上就出现了许多寓教于乐的通过游戏的形式来教你编程的网站.让你快乐学习编程. CodinGame 四大游戏编程网站,边玩游戏,边学Python,拒绝枯燥快乐编程 这是一个需要编程一个 AI 机器人,然后由它来解决各种面临的问题的有趣游戏.支持各种编程语言. 支持各种编程语言. 网站: https://www.codingame.com/ Code Comba

第八章python元类编程

1.property动态属性 一般对象中的属性使用单下划线或双下划线开头的都是伪私有类型,对于单下划线开头的属性(表示为protected类型)直接可以通过对象访问,而双下滑线开头的属性(表示private类型)必须使用对象.__类名__私有属性名即可访问 1 class Test: 2 def __init__(self): 3 self.__t1 = "t1" 4 self._t2 = "t2" 5 6 7 test = Test() 8 print(test.

京东研发类-编程题-买水果

笔试的时候,没有考虑到购买多样水果的时候,每样水果的重复次数,因此没能AC. 现改正,测试了几个用例. public static void main(String[] args) { Scanner sc = new Scanner(System.in); while (sc.hasNext()) { String[]s1 = sc.nextLine().split(" "); //价格数目 int n = Integer.valueOf(s1[0]); //物品数目 int m =