类嵌套_list泛型_餐馆点菜例

form1内容:

private void button1_Click(object sender, EventArgs e)

{

//声明并初始化一张点菜清单

yiduicai danzi = new yiduicai();

//声明并初始化第一个菜

yigecai cai1 = new yigecai(3.6f, 2);

//把第一个菜添加到点菜清单

danzi.addcai(cai1);

//声明并初始化第二个菜

cai1 = new yigecai(9f, 1);

//把第二个菜添加到点菜清单

danzi.addcai(cai1);

//输出清单中所有菜品总价

MessageBox.Show(danzi.total_jiage().ToString());

}

类“一个菜”

//一个菜,模拟餐馆点菜时客人每一次报出菜名的单价和数量

class yigecai

{

float dj;//菜品单价

int sl;//菜品数量

//构造函数,由单价和数量初始化属性(字段)

public yigecai(float price,int count)

{

dj = price;

sl = count;

}

//由数量和单价,计算当前菜品的价格

public float jiage()

{

return dj * sl;

}

}

//类“一堆菜”

//一堆菜,模拟餐馆点餐时统计下来的完整的点菜清单

class yiduicai

{

List<yigecai> cais = new List<yigecai>();//点菜清单列表

//加菜方法,用于把确认的菜品添加进清单

public void addcai(yigecai cai)

{

cais.Add(cai);

}

//计算总价方法,用于获取所有菜品价格

public float total_jiage()

{

float sum=0;

for (int i = 0; i <cais.Count; i++)

{

sum += cais[i].jiage();//调用“yigecai”这个类的价格计算方法

}

return sum;

}

}

原文地址:https://www.cnblogs.com/wanjinliu/p/11657523.html

时间: 2024-10-17 17:08:52

类嵌套_list泛型_餐馆点菜例的相关文章

Java泛型_上界extends_下界super

?Java泛型_上界extends_下界super ? 通配符类型 <? extends T> 表示类型的上界,表示参数化类型的可能是T或是T的子类 <? super T> 表示类型下界(Java Core中叫超类型限定),表示参数化类型是此类型(T)的超类型(父类型),直至Object 当使用 Upper Bound 通配符时 如下代码, /**  * 代码中通配符<?> 是 <? extends Object> 的简写  *  * @param list

C++ Primer 学习笔记_17_类与数据抽象(3)_类作用域

C++ Primer 学习笔记_17_类与数据抽象(3)_类作用域 引言: 每个类都定义了自己的新作用域与唯一的类型.即使两个类具有完全相同的成员列表,它们也是不同的类型.每个类的成员不同与任何其他类(或任何其他作用域)的成员. 一.类作用域中的名字查找 1)首先,在使用该名字的块中查找名字的声明.只考虑在该项使用之前声明的名字. 2)如果在1)中找不到,则在包围的作用域中查找. 如果找不到任何声明,则出错. 类的定义实际上是在两个阶段中处理: 1)首先,编译器声明: 2)只有在所有成员出现之后

C++ Primer 学习笔记_19_类与数据抽象(5)_初始化列表(const和引用成员)、拷贝构造函数

C++ Primer 学习笔记_19_类与数据抽象(5)_初始化列表(const和引用成员).拷贝构造函数  从概念上将,可以认为构造函数分为两个阶段执行: 1)初始化阶段: 2)普通的计算阶段.计算阶段由构造函数函数体中的所有语句组成. 一.构造函数初始化列表 推荐在构造函数初始化列表中进行初始化 1.对象成员及其初始化 <span style="font-size:14px;">#include <iostream> using namespace std;

C++ Primer 学习笔记_16_类与数据抽象(2)_隐含的this指针

C++ Primer 学习笔记_16_类与数据抽象(2)_隐含的this指针 1.引言 在前面提到过,成员函数具有一个附加的隐含形参,即指向该类对象的一个指针.这个隐含形参命名为this. 2.返回*this 成员函数有一个隐含的附加形参,即指向该对象的指针,这个隐含的形参叫做this指针(编译器自动传递)使用this指针保证了每个对象可以拥有不同数值的数据成员,但处理这些成员的代码可以被所有对象共享.成员函数是只读的代码,由所有对象共享,并不占对象的存储空间,因为this指针指向当前对象,所以

C++ Primer 学习笔记_15_类与数据抽象(1)_类的定义和声明

C++ Primer 学习笔记_15_类与数据抽象(1)_类的定义和声明 在C++中,用类来定义自己的抽象数据类型.通过定义类型来对应所要解决的问题中的各种概念,可以使我们更容易编写.调试和修改程序.可以使得自己定义的数据类型用起来与内置类型一样容易和直观. 看一下Sales_item类: class Sales_item { private: std::string isbn; unsigned units_sold; double revenue; public: double ave_pr

String类中的常用方法_判断

字符串判断:1,字符串石佛包含某个字符串.boolean contains(str); 特殊之处:indexOf(String str),如果返回的值是-1,那么就表示不包含这个字符串 也可以实现判断. 2,字符串是否有内容.boolean isEmpty() 字符串为空时返回true 3,字符串是否以指定内容开头  boolean startsWith(String str) boolean startsWith(String str,int fromindex); 4,字符串是否以指定内容结

String 类中的常用方法_转换

1,将字符数组转换成字符串 使用构造函数,String(char[] charArry) String(char[] charArray,int offset,int count);将字符数组中的一部分转换成字符串.从offset取count个字符. static String copyValueOf(char[] charArry); static String copyValueOf(char[] charArry,int offset,int count); static String v

C++ Primer 学习笔记_20_类与数据抽象(6)_深拷贝与浅拷贝、空类与空数组

C++ Primer 学习笔记_20_类与数据抽象(6)_深拷贝与浅拷贝.空类与空数组 一.深拷贝与浅拷贝 浅拷贝:被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象.换而言之,浅拷贝仅仅复制所考虑的对象,而不复制它所引用的对象. 深拷贝:被复制对象的所有变量都含有与原来的对象相同的值,除去那些引用其他对象的变量.那些引用其他对象的变量将指向被复制过的新对象,而不再是原有的那些被引用的对象.换而言之,深拷贝把要复制的对象所引用的对象都复制了一遍. 浅拷贝可

类模板,多种类型的类模板,自定义类模板,类模板的默认类型,数组的模板实现,友元和类模板,友元函数,类模板与静态变量,类模板与普通类之间互相继承,类模板作为模板参数,类嵌套,类模板嵌套,类包装器

 1.第一个最简单的类模板案例 #include "mainwindow.h" #include <QApplication> #include <QPushButton> #include <QLabel> template<class T> class run { public: T w; void show() { w.show(); } void settext() { w.setText("A"); }