《面向对象程序设计》课程设计教学大纲
适用专业:计算机科学与技术
课程周数:2周
一、大纲说明
本大纲根据计算机科学与技术专业人才培养方案制订。
(一)课程设计性质
课程设计是学生对课程所学知识的综合运用,它与课堂听讲、上机实验、课外练习、自学研究相辅相成,构成一个完整的课程教学体系。
(二)主要先修课程和后续课程
1.先修课程:《C语言程序设计》
2.后续课程:《Java程序设计》、《软件工程》
二、课程设计目的及基本要求
本课程全面系统的学习面向对象程序设计的基本概念,基本语法和编程方法。正确理解掌握C++面向对象程序设计的基本特性:类,对象,继承与派生,多态,虚函数,模板,流类库等。遵循软件过程的各个环节进行系统分析、设计、实现、集成、测试,并相应给出软件规格说明书等制品,了解当前常用的软件开发工具(Visual C++),要求熟练掌握基于Win32 Console Application的程序设计,培养解决实际问题的能力。
三、课程设计容及安排
1、有理数运算
问题描述:有理数是一个可以化为一个分数的数,例如2/3,533/920,-12/49都是有理数,而就为无理数。在C++中,并没有预先定义有理数,需要时可以定义一个有理数类,将有理数的分子和分母分别存放在两个整型变量中。对有理数的各种操作都可以用重载运算符来实现。
基本要求:定义并实现一个有理数类,通过重载运算符+、-、*、/对有理数进行算术运算,通过重载运算符==实现判定两个有理数是否相等。写一个优化函数,它的作用是使有理数约去公分母,也即是使保存的有理数分子和分母之间没有公约数(除去1以外)。此外,还要定义一个将有理数转换为实数的函数,再加上构造函数和有理数输出函数。
测试数据:在应用程序中,创建若干有理数对象,通过带参数的构造函数使得各有理数对象值各不相同,然后分别进行各类运算,输出运算结果,检验其正确性。
实现提示:
设有两个有理数a/b和c/d,则有:
(1)有理数相加分子=a*d+b*c;分母=b*d
(2)有理数相减分子=a*d-b*c;分母=b*d
(3)有理数相乘分子=a*c;分母=b*d
(4)有理数相除分子=a*d;分母=b*c
优化函数在创建有理数对象时应执行,在执行其它各种运算之后也需执行它,这样可保证所存储的有理数随时都是最优的。对于判断两个有理数是否相等,由于在对有理数进行各种运算后都对其进行优化,所以判定两个有理数是否相等只需判定它们两个的分子和分母分别相等即可。
选做容:重载插入(<<)和提取(>>)运算符,使得对有理数可以直接输入输出。
设有理数输入格式为:
整数1 整数2 //整数1为分子,整数2为分母
有理数输出格式为:
分子/分母
2、通讯录管理
问题描述:编写一个简单的通讯录管理程序。通讯录记录有,地址(省、市(县)、街道),,邮政编码等四项。
基本要求:程序应提供的基本基本管理功能有:
1)添加:即增加一个人的记录到通信录中
2)显示:即在屏幕上显示所有通信录中的人员信息,应能分屏显示。
3)存储:即将通讯录信息保存在一个文件中。
4)装入:即将文件中的信息读入程序。
5)查询:可根据查找某人的相关信息,若找到显示其、地址、和邮政编码。
6)修改:可修改一个人的除外其它信息。
测试数据:程序应输入不少于10个人员的通讯录信息,应考虑到人员可以同名的情况。
实现提示:程序可用一个单向链表来管理人员信息,每个人员的,地址,和邮政编码用一个类Cperson来实现,作为链表的值指针指向这些Cperson类对象,通过链表的遍历可以操作这些数据。
选做容:为了加快数据定位查找的速度,采用常用优先的方法对链表的各个节点进行排序,即一旦操作了一个人员的数据,他的数据就将被调用到链表的链首。这样经过有限次操作,经常查阅的人员的信息就将排在链表的前端。虽然不能说链首的节点一定是最常用的,但常用的节点一定会排在较靠前的部分,链表查找时所要走的平均距离一定较短。
3、商品销售统计
问题描述:编写商品销售统计程序,商品的信息有:商品的名称,计量单位(重量或件),单价。所有商品的信息事先已存入计算机,屏幕上显示所有商品的名称,选择商品名,输入商品计量单位(如重量,件数等),根据单价算出总价。客户一次购物可能购买多种商品,程序应计算出客户应付的钱款数。
基本要求:程序分为两个部分:第一部分用于输入商品的信息并允许修改和删除;第二部分实现销售统计。程序运行时由用户选择进入哪一部分功能,并能在运行时在两部分之间切换。第二部分运行时,首先显示所有商品名称及代码(商品数目较多时,应考虑分屏显示),用户输入商品代码及商品重量或件数,用户一次操作可输入若干商品的购买信息,然后输入一个特殊的代码(如-1)表示本次购物结束。此时。程序计算出应付钱款数并显示。
测试数据:程序应输入不少于10种商品的信息,并进行模拟运行。
实现提示:本程序的商品信息管理可采用与课程设计题目二类似的数据结构,既定义一个商品类,每种商品作为商品类的实例(对象)存储在链表节点中。
选做容:程序在营业结束时统计每种商品的销售量,销售金额及总营业额。因此第二部分应有营业结束的选择,当用户选择此项时屏幕上显示当天营业的每种商品的销售量,销售金额及总营业额。注意,商品类的数据成员应增加有商品的销售量和销售金额。总营业额是所有商品的营业额之和,可用静态数据成员实现。或可由原商品类派生出一个特殊的类,增加上面的数据成员及相应的成员函数。
4、研究生初试录取
问题描述:研究生考试课程为4门,其中数学、外语、政治为统一命题,而专业基础课则根据不同的专业由招生学校自行命题。国家对初试录取分数有总分要求(如某一年要求4门课总分应达到310分),另外还有对每门课的最低分数要求(如总分为100的试卷最低应达到40分,总分为150的试卷最低应达到65分)。编程统计初试合格的人数,并按总分由高到低的顺序输出合格考生的信息。
基本要求:程序运行时首先要求输入:考生,号,报考专业,是否应届生,4门课程(政治、数学、外语、专业基础课)成绩。这些原始数据应保存到一个文件中。然后输入:录取的总分要求,各课程的最低分数要求。输出要求:过线考生的,号,报考专业,是否应届生,4门课程(政治、数学、外语、专业基础课)成绩及总分,这些信息应存放到另一个文件中。
测试数据:程序应输入不少于10名考生的信息,其中应届生和历届生分别有若干名,并且都有合格和不合格的情况。
实现提示:可定义一个考生类存放有关信息和实现相应的操作。分数线数据(总分要求和各门课程的要求)可定义另外的类来存放,但应能被考生类及其派生类直接访问。
选做容:初试合格的考生应经过复试才能决定是否录取,复试成绩合格(大于一给定分值)可以录取,否则被淘汰。而录取的顺序假设是按照专业基础课和复试成绩的平均值来确定的(因为这涉及到是计划还是委培问题)。因此,应首先输入初试合格考生的复试成绩及复试的合格线分数,然后按上面要求排序输出并标明被淘汰的学生。
5、足球联赛积分
问题描述:足球联赛采用主客场双循环赛制,胜一场得3分,平局各得1分,负一场得0分,联赛排名以积分多者在前,当两队(或多队)积分相同时,则净胜球(即进球数与失球数之差)多者在前,若净胜球相同,则进球数多者在前,若仍相同,则抽签或踢附加赛决定名次(这在联赛结束后进行,联赛未结束则两队名次并列,本程序不做这方面要求)。试编一程序统计最近一轮比赛后,各队积分及排名。
基本要求:设积分表结构如下:队名(不超过15个字符),已比赛的场数,赢的场数,平的场数,负的场数,进球数,失球数,积分。积分表放在正文文件中。最近一轮的结果从键盘输入,其形式为:主队名(可用代码),客队名(可用代码),主队得分(即进球数),客队得分(即进球数)。程序应根据此轮结果修改各队的积分和名次,所得的最新记分表仍在原积分文件中并同时在屏幕上显示。
测试数据:可选择我国当年的甲A或甲B联赛的数据输入,并检查与报章公布的数据是否一致。
实现提示:定义一个球队类,每个球队是均是此类的对象。由于联赛中参赛的队伍数是固定的,因此可用对象数组来实现(当然也可以用链表结构)。每输入两个队的比赛成绩,则相应的队的有关数据(比赛场数,赢的场数,平的场数,负的场数,进球数,失球数,积分等)即可进行修改,比赛成绩录入完成,调用联赛排序方法(对象数组作为参数)排出名次并输出。
选做容:篮球联赛(如NBA)往往采用胜率来决定名次,胜率就是取胜的场数比赛场数之比。若胜率相同,再由净胜球及进球数来决定名次,通过继承性完成上述要求。
6、银行账户管理程序
问题描述:设计一个银行账户管理程序,账户的信息有账号(唯一)、、余额、、单位、、地址等,允许用户进行如下操作:开户、销户、存款、取款、转账、查询,一个用户可以有多个户头,账户的数值没有上限。
基本要求:程序运行时,可以由用户选择进行何种操作,开户操作要求输入用户信息后自动获取账号,用户销户后账号被回收,并且该账号可以继续分配给其它账户,不
允许用户透支,根据或账号可以进行用户的信息查询,所有的账户信息应存放到一个文件中,可以随时的访问和更新。
测试数据:程序应输入不少于10人的账户信息,应考虑到人员同名的情况。
实现提示:可定义一个账户类存放账户信息以及执行相应的操作,可以用一个链表类来管理账户。
选作容:在上述程序的基础上,添加联名账户(一个联名账户有两个拥有者)的管理。
7、模拟计算器程序
问题描述:设计一个程序来模拟一个简单的手持计算器。程序支持算术运算+、-、*、/、=、以及C(清除)、A(全清除)操作。
基本要求:程序运行时,显示一个窗口,等待用户输入,用户可以从键盘输入要计算的表达式,输入的表达式显示在窗口中,用户键入’=’符号后,窗口显示出结果。
测试数据:程序输入不少于5种不同的表达式进行测试。
实现提示:可定义一个计算器类,该类包括两个组件对象,一个计算引擎和一个用户接口,用户接口对象处理接受的键盘输入信息,并显示答案,计算引擎对象对给出的数据执行相应操作,并存储操作的结果。
选作容:如果用户输入的表达式不合法,可以判别出来并给出相应的错误提示。
8、设计一个排课程序
问题描述:每位教师都有教学工作量,教师对他所希望讲授的课程表达为一个期望值,1,2…,n,其中1位最高的期望值。课程也有优先级,1,2…,n,用来决定将课程分给教师的顺序,其中1时最高的优先级。设计一个程序针对某些课程给某些教师进行排课。
基本要求:程序运行时,用户输入教师信息(、教师号、工作量)、课程信息(课程名、课程号、周学时、总学时、优先级)、教师对所希望讲授课程的期望值以及教学工作量等相关信息,所有信息应保存在文件中,程序根据课程的优先级以及教师对课程的期望值进行排课。为了公平起见,程序随机分配课程,如果10门课程都有优先级1,程序以随机的顺序将这些课程分给教师,如果10位教师对某门课程的期望值为1,程序应从10位教师中随机选择一个。最后输出排课情况,即某位老师上某门课程,以及某位老师的工作量。
测试数据:程序应能实现对不少于20门课和10个教师的排课,并且使每个教师的满意度达到最大,不存在工作量不满的教师以及未分配的课等情况。
实现提示:可定义一个教师类存放教师信息,所有教师的信息可以用链表存储;定义一个课程类存放课程信息,所有课程的信息可以用链表存储;定义一个排课类进行排课,排课类可以访问课程和教师信息。
选作容:对两个同类班级安排一学期(20周)的课程,程序应能处理某些限制,如一个老师不能同时给两个班上课。
9、设计一个Database类
问题描述:设计一个Database类。Database类是一个表的集合,而表又由行和列组成。例如,下面的雇员信息表包含三个记录,每个记录有四个字段(Employee、Name、
基本要求:能够完成对数据库的基本操作;包括创建数据库,实现对数据库里面的表的添加,删除;以及能够完成对表结构的修改(如添加或删除字段),以及对表中的记录进行添加和删除;能够完成对使用适当的查询语言从一个或多个表中查找相关信息。
测试数据:可以选取高校人员(教师、学生、职工等)数据库作为测试数据
实现提示:Database 类的公有接口包含如下数据成员:
?创建一个表。
?通过增加或删除字段修改表结构。
?删除一个表。
?在表中增加一个记录。
?从表中删除记录。
?用适当的查询语言从一个或多个表中查找信息。
选做容:高校人员信息通常保存在文件里面,可以从文件里面读取人员信息;然后完成上面操作。
10、电煤气管理系统
问题描述:设计一个水电管理信息系统,能够对高校的水电费用进行管理,包括了登记费用,查询费用,以及住户信息管理等。在设计时要考虑到学生和教工在用水电时的不同,学生可以免费使用一定额度的水电,超过这个额度的随便以后必须自费使用,且自费部分水电费的价格标准要高于教工的收费标准(主要是节约资源)。
基本要求:
实现对用户信息的录入
实现水电煤气数据的录入
计算并查询用户应缴费用
查询未缴纳费用
测试数据:可选用小区物业管理部门的数据,也可采用手工输入不少于10个用户信息的数据。
实现提示:用户基本信息类,教工用户信息类,学生用户信息类,收费标准类,该类存储水电煤气标准单位的收费标准,如:煤气,1.0元/立方米;
不同类型人员水、电、煤气信息类,这些类可以包括水表,电表,煤气表ID,抄表时间,上次抄表时间,本次抄表时间,上次抄表度数,本次抄表度数,本次使用度数,费用,是否缴费标记等信息。在实现的时候考虑继承和多态技术的合理使用。
选做容:实现用户查询系统能够找出该用户半年之的交费记录和本次应交费的数据。
11.对参赛结果分数进行处理:参赛选手n人(n>1),评委m人(m>2),评委给每一选手打一个分数score(分数score为小于等于10的一个正实数)。选手的最后得分lastScore计算方法为
(1)m<9时,去掉一个最高分和一个最低分后另m-2个得分的平均值。
(2)m≥9时,去掉两个最高分和两个最低分后另m-4个得分的平均值。
假设事先已经建立了text型的数据文件f1.txt,其中依次记录着n个选手的编号(一个正整数)、(一个字符串)以及m个评委给出的得分。
请编制程序,依次从数据文件f1.txt中读入n个选手的有关信息,而后按上述规定方法计算出每一个选手的最后得分,而且往屏幕上以及另一个text型文件f2.txt中同时输出如下形式的结果信息。
假设参赛选手人数n=5,评委人数m=7,磁盘文件f1.txt中的初始数据为:
1 zhangjin 8.8 9.3 7.9 8.7 8.9 9.7 9.2
2 lintao 8.9 8.2 8.6 8.8 8.5 9.1 9.3
3 guojian 8.9 8.
4 8.7 8.6 8.6 8.4 8.6
4 maling 7.9 8.3 8.
5 8.
6 8.5 8.9 8.3
5 liuyifan 9.5 9.1 9.8 9.2 9.0 9.5 8.9
那么,程序执行后,屏幕显示结果以及磁盘文件f2.txt中的结果均应该为:
参赛号姓名最高分最低分累积分最后得分
1 zhangjin 9.7 7.9 44.9 8.98
2 lintao 9.
3 8.2 43.9 8.78
3 guojian 8.9 8.
4 42.9 8.58
4 maling 8.9 7.9 42.2 8.44
5 liuyifan 9.8 8.9 46.3 9.26
思考:可进一步考虑找出比赛的第1至第k名,也在屏幕以及f2.txt中同时输出相关的结果信息(k小于等于n,并规定若多个选手最后得分相同时,则有效分(即已删除原来的最高分后)中最高分高者名次优先)。
12、设计一个类CStudent,类中包含一个学生的基本数据如下:
编号,,性别,年龄,数学成绩,计算机成绩,外语成绩。
并假设编号为整数,且从1号往后连续编码;为字符串,性别为字符。如:
1 LiPing m 18 89 98 94
请采用binary文件形式,并使用随机读写处理方式,对自定义CStudent类的对象数据进行存储与读写处理(即是说,总按具有连续编码的编号num为“序”来对文件中的各对象数据进行随机读写处理)。并设计该类的成员函数,而且对输出运算符“<<”进行重载,使该运算符能够完成将一个学生的信息输出到屏幕上。要求成员函数完成以下功能:
(1)从键盘输入一个学生的有关信息,并将它们存入到数据文件中(按编号来确定写出位置)。
(2)按编号对学生信息进行检索并将检索结果显示在屏幕上。
(3)按对学生信息进行检索并将检索结果显示在屏幕上。
(4)计算某编号学生的总成绩与平均成绩。
(5)列出所有总成绩超过n分的性别为s同学的有关信息(n,s由用户从键盘输入)。
思考:可进一步对上述程序进行扩充,如,添加学生基本数据(籍贯,专业,班级,其他各门成绩,奖惩记录等),并添加所需要的其他相关处理函数(如可通过咨询教学办公室管理人员后确立),进而将其编制成为一个简单而实用的小型学籍与成绩管理软件。
13、日期时间显示
(1)定义一个时间类Time,能提供时、分、秒组成的时间,并提供时间增加的方法(按秒)。
(2)定义一个日期类Date,记录年、月、日,并提供日期增加的方法(按天)。
(3)由类Time和日期类Date,派生出DateTime类,除具有年、月、日、时、分、秒外,还增加国名和与格林威治时间的差。
编一应用程序,输入年、月、日、时、分、秒,在屏幕上模拟显示一电子计时器,不断输出下一秒的时间和日期,以及格林威治的日期和时间。
注意,当对日期增加1天后,会涉及所谓的“进位”问题:首先算出本“日”所在的月份具有的天数N,若加1之后的“日”数值超过所在的月份具有的天数N时,“进
第1章习题答案 名词解释 抽象:抽象(Abstract)就是忽略事物中与当前目标无关的非本质特征,而强调与当前目标有关的本质特征,从而找出事物的共性,并把具有共性的事物划为一类。面向对象方法中的抽象,是指对具体问题(对象)进行概括,抽出一类对象的公共性质并加以描述的过程。 封装:面向对象方法中的封装就是把将抽象出来的对象的属性和行为结合成一个独立的单位,并尽可能隐蔽对象的内部细节。 消息:消息是面向对象程序设计用来描述对象之间通信的机制。一个消息就是一个对象要求另一个对象实施某种操作的一个请求。 填空题 (1) 面向过程的结构化程序设计方法面向对象程序设计方法 (2) 顺序选择循环 (3) 程序=数据结构+算法程序=对象+消息 (4) 过程类 (5) 抽象性封装性继承性多态性 选择题 (1) B (2) C (3) D (4) C (5) D (6) A (7) A (8) B C (9) A D 判断题 (1) t (2) f (3) f (4)f (5) t (6) f (7) f (8) t 简答题 (1) 结构化程序设计方法着眼于系统要实现的功能,从系统的输入和输出出发,分析系统要做哪些事情,进而考虑如何做这些事情,自顶向下地对系统的功能进行分解,来建立系统的功能结构和相应的程序模块结构,有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务,便于开发和维护。 随着程序规模与复杂性的增长,这种面向过程的结构化程序设计方法存在明显的不足之处。首先是数据安全性问题,由于数据被每个模块所共用,因此是不安全的,一旦出错,很难查明原因。其次是可维护性及可重用性差,它把数据结构和算法分离为相互独立的实体,一旦数据结构需要改变时,常常要涉及整个程序,修改工作量极大并容易产生新的错误。每一种相对于老问题的新方法都要带来额外的开销。另外,图形用户界面的应用程序,很难用过程来描述和实现,开发和维护也都很困难。 (2) 面向对象的程序设计方法中,将程序设计为一组相互协作的对象(Object)而不是一组相互协作的函数。在程序中,属性用数据表示,用来描述对象静态特征;行为用程序代码实现,用来描述对象动态特征。可见,在面向对象的程序设计方法中,对象是数据结构和算法的封装体。对象之间存在各种联系,它们之间通过消息进行通信。程序可表示为: 程序=对象+消息 在面向对象程序设计中,它着重于类的设计。类正是面向对象语言的基本程序模块,通过类的设计,来完成实体的建模任务。类通过一个简单的外部接口,与外界发生关系。一个类中的操作不会处理到另一个类中的数据,这样程序模块的独立性、数据的安全性就有了良好的保障。程序的执行取决于事件发生的顺序,由顺序产生的消息来驱动程序的执行。不必预先确定消息产生的顺序,更符合客观世界的实际。并且面向对象程序设计方法提供了软件重用、解决大问题和复杂问题的有效途径,具有抽象性、封装性、继承性和多态性等特点。
简答题 1、传统的结构化程序设计的优点和缺点是什么? 优点: (1)这种程序设计方法力求算法描述准确。 (2)对每一子过程模块容易进行程序正确性证明。 缺点: (1)这种程序设计方法本质上是面向“过程”的,而“过程”和“操作”又是不稳定和多变的,因此不能直接反映人类求解问题的思路。 (2)程序代码可重用性差。程序中除少数标准库函数外,每设计一个程序时,程序员几乎从零做起。即使重用代码,通常也是通过拷贝或编辑重新生成一份。 (3)维护程序的一致性困难。该种方法将数据与对数据进行处理的程序代码分离。 2、什么是对象? 每个对象都具有属性(Attribute)和方法(Method)这两方面的特征。对象的属性描述了对象的状态和特征,对象的方法说明了对象的行为和功能,并且对象的属性值只应由这个对象的方法来读取和修改,两者结合在一起就构成了对象的完整描述。 3、什么是消息? 在面向对象的程序设计中,由于对象描述了客观实体,它们之间的联系通过对象间的联系来反映。当一个对象需要另外一个对象提供服务时,它向对方发出一个服务请求,而收到请求的对象会响应这个请求并完成指定的服务。这种向对象发出的服务请求就称为消息。4、什么是多态性? 所谓多态性是指当程序中的其他部分发出同样的消息时,按照接收消息对象的不同能够自动执行类中相应的方法。其好处是,用户不必知道某个对象所属的类就可以执行多态行为,从而为程序设计带来更大方便。 5、什么是面向对象的程序设计方法? 这种方法将设计目标从模拟现实世界的行为转向了模拟现实世界中存在的对象及其各自的行为。 在OOP中,将“对象”作为系统中最基本的运行实体,整个程序即由各种不同类型的对象组成,各对象既是一个独立的实体,又可通过消息相互作用,对象中的方法决定要向哪个对象发消息、发什么消息以及收到消息时如何进行处理等。 6、面向对象方法的特点是什么? (1)OOP以“对象”或“数据”为中心。由于对象自然地反映了应用领域的模块性,因此具有相对稳定性,可以被用作一个组件去构成更复杂的应用,又由于对象一般封装的是某一实际需求的各种成分,因此,某一对象的改变对整个系统几乎没有影响。 (2)引入了“类”(class)的概念。类与类以层次结构组织,属于某个类的对象除具有该类所描述的特性外,还具有层次结构中该类上层所有类描述的全部性质,OOP中称这种机制为继承。 (3)OOP方法的模块性与继承性,保证了新的应用程序设计可在原有对象的数据类型和功能的基础上通过重用、扩展和细化来进行,而不必从头做起或复制原有代码,这样,大大减少了重新编写新代码的工作量,同时降低了程序设计过程中出错的可能性,达到了事半功倍的效果。 7、面向对象的程序设计方法与结构化程序设计方法的比较 (1)传统的结构化程序设计方法以过程为中心构造应用程序,数据和处理数据的过程代码是分离的、相互独立的实体,设计出的程序可重用代码少,且当代码量增加时维护数据和代码的一致性困难。
1.绪论 1.1设计的目的与意义 香皂是日常生活中必不可少的洗涤护理用品,香皂质地细腻、去污力强,是肥皂的改良品,本设计就是基于方便、卫生、环保的设计理念进行的设计,而且防护性能好,经济效益高,此设计的市场定位应该适合大部分人群,尤其主要是面向那些较常家居的人群。因此,工艺品包装应当提出具有个性化的包装设计方法,能够使产品在众多同类品牌中脱颖而出,首先从外观上吸引消费者的眼球,进而产生购买欲望;其次通过改良的包装结构,让产品的包装充分循环利用,将具有个性化的设计理念贯穿始终;最后,达到提升品牌形象,扩大产品的销售和影响力的目的并实施具有个性化的包装设计。本设计采用了一层用塑料制成的包装,解决了以前香皂保质期不长,消费者不放心的问题,且卫生、方便。 1.2香皂的市场调查 1963年舒肤佳除菌香皂首次在美国上市(属于宝洁公司的品牌之一),此后畅销于全世界几十个国家和地区。因其显著的抗菌功效,在国际上,舒肤佳品牌已获得多家国际医学专业团体的认可。在中国,舒肤佳的除菌功效也获得了中华医学会的验证,实验证明,舒肤佳能有效去除和抑制可能引起皮肤感染和汗臭的细菌。香皂附加成本增高和国外品牌占主导地位的现状,直接导致了香皂普遍售价高昂这一结果。由于国外香皂注重包装、设计、广告投入、整体策划,使得香皂生产的附加成本增高。因此,其上市产品的价格一开始就定得很高。而且通过调查,我们发现消费者心理注重包装设计精美大方、杀菌止痒功能好、美容功能好、气味清新、泡沫丰富、清洁性好、皂体硬度适中、外观保持性好、品种多样化、广告宣传到位。 2.产品的物性及流通环境的分析 2.1产品的物性 香皂以脂肪酸钠和其他表面活性剂为主要原料,添加品质改良剂和外观改良剂,经过加工成型后制成的产品。香皂的主要成分是脂肪酸钠和表面活性剂,此外还含有1%—1.5%的香精,一般用牛油、羊油和椰子油为原料,制皂前经过精炼、脱色、脱臭等精制处理。香皂使用时会沾上水,进而水分被香皂吸收。使用后,香皂里面的水分要挥发,但由于进入香皂的水分分布不均以及香皂各部分接触空气的程度不同,会导致水分的挥发程度不同,进而致使香皂出现裂痕。如果长期存放,香皂原料中含有的不饱和脂肪酸会被氧、光、微生物等氧化,有时会出现酸败现象,香皂中的水分也会散失,影响使用效果。舒肤佳香皂含有抗菌活性成份迪保肤,在清洗过程中能有效去除皮肤表面的暂留微生物。清洗后,舒肤佳留在皮肤上的抗菌活性成分迪保肤能有效抑制皮肤表面细菌的再生。
1 什么是面向对象程序设计,它与传统的结构式程序有什么不同。 面向对象程序设计是一种适用于设计、开发各类软件的范型。它是将软件看成是一个由对象组成的社会:这些对象具有足够的智能,能理解从其他对象接受的信息,并以适当的行为作出响应;允许低层对象从高层对象继承属性和行为。通过这样的设计思想和方法,将所模拟的现实世界中的事物直接映射到软件系统的解空间。 与传统的结构式程序设计相比,面向对象程序设计吸取了结构式程序设计的一切优点(自顶向下、逐步求精的设计原则)。而二者之间的最大差别表现在: ·面向对象程序采用数据抽象和信息隐藏技术使组成类的数据和操作是不可分割的,避免了结构式程序由于数据和过程分离引起的弊病。 · 面向对象程序是由类定义、对象(类实例)和对象之间的动态联系组成的。而结构式程序是由结构化的数据、过程的定义以及调用过程处理相应的数据组成的 2 用面向对象方法建立模型的思维过程是怎样的。 用面向对象方法建立拟建系统的模型的过程就是从被模拟现实世界的感性具体中抽象要解决的问题概念的过程。这种抽象过程分为知性思维和具体思维两个阶段,其中:·知性思维是从感性材料中分解对象,抽象出一般规定,形成了对对象的普遍认识。·具体思维是从知性思维得到出的一般规定中揭示的事物的深刻本质和规律,其目的是把握具体对象的多样性的统一和不同规定的综合。 3 解释以下概念: ①对象:在现实世界中,对象就是可以感觉到的实体。每个对象具有一个特定的名字以 区别于其他对象;具有一组状态用来描述它的某些特性;具有一组操作,每一个操作决定对象的一种功能或行为(为自身服务的操作和为其他对象提供服务的操作)。而在面向对象系统中,对象是可以标识的存储区域。每个对象的状态被保存在此区域中,而实现一类对象行为的操作(代码)被保存在另外相关的存储器区域中。 ②消息:消息是要求某个对象执行其某种功能操作(方法)的规格说明。因此,消息是 由消息的接收者、消息要求提供的操作(消息名)和必要的参数组成的。 ③类:在现实世界中,类是对一组具有共同特性(属性和行为)的客观对象的抽象。而 在面向对象系统中,类是由程序员自定义的具有特定结构和功能的类型,是一种代码共享的手段。 ④实例:任何一个对象都是该对象所属类的一个具体实例。 ⑤公有消息:是由对象外向对象发送的消息,用于激活该对象的某种方法。 ⑥私有消息:是由对象向自身发送的消息,用于内部操作;该类消息不能从对象外向该 对象发送。 ⑦消息序列:在面向对象系统中一个事件的发生总会有多个对象的多次相互作用才能完 成,使得这些对象能够相互作用的消息组成的序列被称为消息序列。 4 类与实例的关系如何? 类是创建对象的模板,而对象是实现类的实例。属于同一类的不同实例必须具有: ·相同的操作集合; ·相同的静态属性集合; ·不同的对象名和属性动态值。