最新日志

发表于:2008-3-2 16:27:13
标签:无标签

0

面试技巧

 热点问题1
  “从你的第一份工作开始,谈谈你的职业经历。”
  面试官目的:了解你的技能、责任心和职业成就。
  答案范例:我从计算机专业毕业后,在一家财富500强企业做金融分析师,这是我的第一份工作。工作中我学会了如何将计算机知识与企业战略原则结合起来。由于表现突出,我被提升为助理,工作职责也扩展到项目管理方面,我的金融分析能力也因此得到进一步提高。
  分析:这个答案的优点在于,求职者有效展现了其技能的进步,同时注意言简意赅,重点突出了面试官想要了解的内容,并且暗示其在工作中长期保持着出色的成绩。
  提醒:不要仅仅谈你完成的任务而不谈从中获取的技能。一个好的答案应该将技能和任务结合在一起。
  热点问题2:
  “你希望应聘的这份工作能带给你什么?”
  面试官目的:了解你的职业发展目标是否与应聘岗位的要求相符合。
  答案范例:我以前在一家新创立的电信公司担任经理工作,取得了不错的业绩,具备了较强的项目管理能力,包括为工作团队设置目标和计划,与客户接洽并了解市场需求,确保团队的服务质量和产品质量。目前我正在寻求新的职业发展方向,希望在一家规模更大、资历更老的电信公司挑战自己的能力,能与财富500强企业的客户共事,能在更多职业精英中管理团队。贵公司此次招聘的职位正是我所寻找的理想类型,并且我相信完全能够适应你们的工作原则。
  分析:这个答案的优点在于,求职者明确表现出自己对所应聘职位的了解和认识,强调了自己已有的工作技能,并证明了自己的职业目标与应聘工作特点相符。回答中也注重提及自己希望面对挑战,有机会为公司做出贡献的迫切心情。
  提醒:面试前要尽可能从各种途径了解所应聘的工作,包括工作职责、技能要求以及企业的相关背景。
  热点问题3:
  “你最大的弱点是什么?”
  面试官目的:了解你的资质与应聘职位理想人选的要求是否符合。
  答案范例:我最大的弱点是有太注重细节的倾向。有时候,为了实现目标,我们需要迅速完成工作并解决主要问题。如果我事事追求完美,可能会浪费一些时间。针对这一不足,我会经常对比一下我的工作现状和职业目标,确保自己没有把太多时间花费在某一个项目或不必要的工作上。

 分析:这是个常见的弱点,所以即使提到也不会对求职者的面试造成不良影响,相反还能提高自己的诚信度。此外,这位求职者同时提到自己正努力克服这一弱点,这类针对弱点的建设性措施是面试官最希望听到的。
  避免事项:在谈到某项弱点时,注意这一弱点不应该对胜任应聘职位产生任何影响。

    热点问题4
  疤敢惶改闶乱瞪献畲蟮氖О堋!?
  面试官目的:希望通过你所经历的事件,了解你是如何应对失败,以及接受挑战的能力。
  答案范例:我初次管理团队时负责的是一个时限要求很紧的项目。我认为7天就够了,但我当时疏忽了一个事实,这个项目的一个环节是由另外一个部门负责的。由于他们没有按计划完成,而我又没有考虑周全,因此最后我们不得不加班加点,才在预定期限内完成了项目。这次经历让我懂得了时间管理和部门间交流的重要性。在之后的工作中,我在时间计划上一直保持谨慎态度,并更注重全方面地考虑问题。
  分析:这个回答所提出的失败,是新负责项目工作的职员常犯的错误,因此可算是相当保险的选择。而且,求职者详细解释了其早期失败的原因,然后把话题转移到从中吸取的教训上,这种回答方式很值得借鉴。
  提醒:不要举出一个一般职员不常犯的大错误,也不要选择近期刚发生的错误,这样你就没有时间表现自己如何将失败的教训转化为成功的动力。
  热点问题5:
  
“你在过去的四年
中经常换工作,对此有何解释?
  面试官目的:希望你能证明自己是一个作风稳健、踏实肯干的员工。

  答案范例:在刚刚毕业那几年,我属于摸着石头过河的阶段,想要找到自己最喜欢的领域。尽管我在不长的时间里先后在三家不同公司工作,但在每个职位上都有所收获,而且工作表现也都获得良好的评价。现在,我终于发现了自己喜欢的领域,贵公司的企业文化及员工职业规划都很吸引我,我希望能在贵公司长期工作,并将以前学到的知识与技能充分应用到工作中去。
  分析:这位求职者用积极的语气对以前的跳槽经历做出了合理的解释,而且转换到积累工作经验的角度,变不利为有利。同时,他也表现出对长期工作的兴趣。
  提醒:雇主一般都希望寻找稳定性强的员工,同时也对员工的诚实度有一定要求。因此,在回答此类问题时,一方面要开诚布公地谈自己的经历和想法,另一方面要明确准备长期工作的态度,并强调自己的能力以及对所应聘职位的强烈兴趣。

点击此处查看原文 >>

系统分类: 生活点滴   |    用户分类: 无分类    |    来源: 转贴

评论(0) | 阅读(170)
发表于:2008-3-1 20:52:48
标签:无标签

0

ERP系统

所谓ERP是英文Enterprise Resource Planning(企业资源计划)的简写。它是从MRP(物料资源计划)发展而来的新一代集成化管理信息系统,它扩展了MRP的功能,其核心思想是供应链管理,它跳出了传统企业边界,从供应链范围去优化企业的资源,是基于网络经济时代的新一代信息系统。它对于改善企业业务流程、提高企业核心竞争力的作用是显而易见的。  

ERP是在20世纪80年代初开始出现的。从90年代开始,以SAP、Oracle为代表的国际著名ERP产品进入中国,并迅速扩展。接着,国内也相继出现了一些早期ERP产品,例如开思ERP、利玛ERP、和佳ERP及博科ERP等。  

ERP系统的特点及核心内容包括有:  

·企业内部管理所需的业务应用系统,主要是指财务、物流、人力资源等核心模块。  

·物流管理系统采用了制造业的MRP管理思想;FMIS有效地实现了预算管理、业务评估、管理会计、ABC成本归集方法等现代基本财务管理方法;人力资源管理系统在组织机构设计、岗位管理、薪酬体系以及人力资源开发等方面同样集成了先进的理念。  

·ERP系统是一个在全公司范围内应用的、高度集成的系统。数据在各业务系统之间高度共享,所有源数据只需在某一个系统中输入一次,保证了数据的一致性。  

·对公司内部业务流程和管理过程进行了优化,主要的业务流程实现了自动化。  

·采用了计算机最新的主流技术和体系结构:B/S、INTERNET体系结构,WINDOWS界面。在能通信的地方都可以方便地接入到系统中来。  

·集成性、先进性、统一性、完整性、开放性。 

================================================================================

ERP是(EnterpriseResourcePlanning,企业资源计划系统)的概念,是美国GartnerGroup公司于1990年提出的,其确切定义是:MRPⅡ(企业制造资源计划)下一代的制造业系统和资源计划软件。除了MRPⅡ已有的生产资源计划,制造、财务、销售、采购等功能外,还有质量管理,实验室管理,业务流程管理,产品数据管理,存货、分销与运输管理,人力资源管理和定期报告系统。

换言之,ERP将企业内部所有资源整合在一起,对采购、生产、成本、库存、分销、运输、财务、人力资源进行规划,从而达到最佳资源组合,取得最佳效益。

ERP把客户需求和企业内部的制造活动以及供应商的制造资源整合在一起,形成企业一个完整的供应链,其核心管理思想主要体现在以下三个方面:一、体现对整个供应链资源进行管理的思想;二、体现精益生产、敏捷制造和同步工程的思想;三、体现事先计划与事前控制的思想。

ERP应用成功的标志是:一、系统运行集成化,软件的运作跨越多个部门;二、业务流程合理化,各级业务部门根据完全优化后的流程重新构建;三、绩效监控动态化,绩效系统能即时反馈以便纠正管理中存在的问题;四、管理改善持续化,企业建立一个可以不断自我评价和不断改善管理的机制。

(1)、企业:什么是企业?企业是一个组织,是一个机器,它存在的目的是赢利,从某种意义上说,“企业”本身只是一个工具,是一个生蛋的鸡 

(2)、企业资源:企业一般都有哪些“资源”?不外呼四个: 

A、物力资源——动起来就是“物流” 

B、财力资源——动起来就是“资金流” 

C、人力资源——动起来就是“人流” 

D、信息资源——动起来就是“信息流” 

(3)、计划:计划的意义最终只有一个,那就是在一定时间内实现一定的目标 

(4)、管理:因为ERP是管理软件,就不能不提到管理,管理的职能(在实际组织管理中的作用?)一般说来有五个:计划——组织——人员配备——领导和指导——控制和反馈,这是一个循环 

现在我们再来想想究竟什么是ERP和ERP的作用 

(1)、ERP——企业资源计划!也就是说,通过ERP对企业整个资源(四大资源)进行整合,并为达到一定的目标做企业资源的最优化配置——企业资源计划! 

试问:就国内企业管理、员工素质等情况来看,哪个上ERP的公司自身管理能做好这一点?就国内ERP软件水平来看,哪个公司的ERP产品又能做到这一点? 

(2)、ERP是管理软件,大家都说:不要指望ERP来帮企业解决一切问题。当然不能!ERP做的“合格”的,能做好管理五大职能中的“控制和反馈”;做的很好的,也就是能做到管理五大职能中的“计划”职能!怎么可能指望ERP解决企业一切问题?也就是说,ERP做的好的,是通过这个管理工具,将企业管理中的“头”(计划)和“尾”(控制和反馈)做好。 

ERP经典解释:

   一天中午,丈夫在外给家里打电话:"亲爱的老婆,晚上我想带几个同事回家吃饭可以吗?"(订货意向)

妻子:"当然可以,来几个人,几点来,想吃什么菜?"

丈夫:"6个人,我们7点左右回来,准备些酒、烤鸭、番茄炒蛋、凉菜、蛋花汤......。你看可以吗?"(商务沟通)

妻子:"没问题,我会准备好的。"(订单确认)

妻子记录下需要做的菜单(MPS计划),具体要准备的东西:鸭、酒、番茄、鸡蛋、调料......(BOM物料清单),发现需要:1只鸭蛋,5瓶酒,4个鸡蛋......(BOM展开),炒蛋需要6个鸡蛋,蛋花汤需要4个鸡蛋(共用物料)。

打开冰箱一看(库房),只剩下2个鸡蛋(缺料)。

来到自由市场,妻子:"请问鸡蛋怎么卖?"(采购询价)

小贩:"1个1元,半打5元,1打9.5元。"

妻子:"我只需要8个,但这次买1打。"(经济批量采购)

妻子:"这有一个坏的,换一个。"(验收、退料、换料)

回到家中,准备洗采、切菜、炒菜......(工艺线路),厨房中有燃气灶、微波炉、电饭煲......(工作中心)。妻子发现拨鸭毛最费时间(瓶颈工序,关键工艺路线),用微波炉自己做烤鸭可能来不及(产能不足),于是阅览室在楼下的餐厅里买现成的(产品委外)。

下午4点,电话铃又响:"妈妈,晚上几个同学想来家里吃饭,你帮忙准备一下。"(紧急订单)

"好的,你们想吃什么,爸爸晚上也有客人,你愿意和他们一起吃吗?"

"菜你看着办吧,但一定要有番茄炒鸡蛋,我们不和大人一起吃,6:30左右回来。"(不能并单处理)

"好的,肯定让你们满意。"(订单确定)

鸡蛋又不购了,打电话叫小贬送来。(紧急采购)

6:30,一切准备就绪,可烤鸭还没送来,急忙打电话询问:"我是李太,怎么订的烤鸭还不送来?"(采购委外单跟催)

"不好意思,送货的人已经走了,可能是堵车吧,马上就会到的。"

门铃响了。"李太太,这是您要的烤鸭。请在单上签一个字。"(验收、入库、转应付账款)

6:45,女儿的电话:"妈妈,我想现在带几个朋友回家吃饭可以吗?"(呵呵,又是紧急订购意向,要求现货)

"不行呀,女儿,今天妈已经需要准备两桌饭了,时间实在是来不及,真的非常抱歉,下次早点说,一定给你们准备好。"(哈哈,这就是ERP的使用局限,要有稳定的外部环境,要有一个起码的提前期)

送走了所有客人,疲惫的妻子坐在沙发上对丈夫说:"亲爱的,现在咱们家请客的频率非常高,应该要买些厨房用品了(设备采购),最好能再雇个小保姆(连人力资源系统也有接口了)。

丈夫:"家里你做主,需要什么你就去办吧。"(通过审核)

妻子:"还有,最近家里花销太大,用你的私房钱来补贴一下,好吗?"(最后就是应收货款的催要)

 

ERP的概念与历程

  ERP——Enterprise Resource Planning 企业资源计划系统,是指建立在信息技术基础上,以系统化的管理思想,为企业决策层及员工提供决策运行手段的管理平台。ERP系统集中信息技术与先进的管理思想於一身,成为现代企业的运行模式,反映时代对企业合理调配资源,最大化地创造社会财富的要求,成为企业在信息时代生存、发展的基石。

  进一步地,我们可以从管理思想、软件产品、管理系统三个层次给出它的定义:

  1.是由美国著名的计算机技术咨询和评估集团Garter Group Inc.提出的一整套企业管理系统体系标准,其实质是在MRP II (Manufacturing Resources Planning,“制造资源计划”)基础上进一步发展而成的面向供应链(Supply Chain)的管理思想;

  2.是综合应用了客户机/服务器体系、关系数据库结构、面向对象技术、图形用户界面、第四代语言(4GL)、网络通讯等信息产业成果,以ERP管理思想为灵魂的软件产品;

  3.是整合了企业管理理念、业务流程、基础数据、人力物力、计算机硬件和软件于一体的企业资源管理系统。

  具体来讲,ERP与企业资源的关系、ERP的作用以及与信息技术的发展的关系等可以表述如下:

  1. 企业资源与ERP

   厂房、生产线、加工设备、检测设备、运输工具等都是企业的硬件资源,人力、管理、信誉、融资能力、组织结构、员工的劳动热情等就是企业的软件资源。企业运行发展中,这些资源相互作用,形成企业进行生产活动、完成客户订单、创造社会财富、实现企业价值的基础,反映企业在竟争发展中的地位。

  ERP系统的管理对象便是上述各种资源及生产要素,通过ERP的使用,使企业的生产过程能及时、高质地完成客户的订单,最大程度地发挥这些资源的作用,并根据客户订单及生产状况做出调整资源的决策。

  2. 调整运用企业资源

   企业发展的重要标志便是合理调整和运用上述的资源,在没有ERP这样的现代化管理工具时,企业资源状况及调整方向不清楚,要做调整安排是相当困难的,调整过程会相当漫长,企业的组织结构只能是金字塔形的,部门间的协作交流相对较弱,资源的运行难於比较把握,并做出调整。信息技术的发展,特别是针对企业资源进行管理而设计的ERP系统正是针对这些问题设计的,成功推行的结果必使企业能更好地运用资源。

  3. 信息技术对资源管理作用的阶段发展过程

  计算机技术特别是数据库技术的发展为企业建立管理信息系统,甚至对改变管理思想起著不可估量的作用,管理思想的发展与信息技术的发展是互成因果的环路。而实践证明信息技术已在企业的管理层面扮演越来越重要的角色。

  信息技术最初在管理上的运用,也是十分简单的,主要是记录一些数据,方便查询和汇总,而现在发展到建立在全球Internet基础上的跨国家,跨企业的运行体系,初略可分作如下阶段:

  A. MIS系统阶段( Management Information System)

  企业的信息管理系统主要是记录大量原始数据、支持查询、汇总等方面的工作。

  B. MRP阶段(Material Require Planning)

  企业的信息管理系统对产品构成进行管理,借助计算机的运算能力及系统对客户订单、在库物料、产品构成的管理能力,实现依据客户订单,按照产品结构清单展开并计算物料需求计划。实现减少库存,优化库存的管理目标。

  C. MRPⅡ阶段(Manufacture Resource Planning)

  在MRP管理系统的基础上,系统增加了对企业生产中心、加工工时、生产能力等方面的管理,以实现计算机进行生产排程的功能,同时也将财务的功能囊括进来,在企业中形成以计算机为核心的闭环管理系统,这种管理系统已能动态监察到产、供、销的全部生产过程。

  D. ERP阶段(Enterprise Resource Planning)

  进入ERP阶段后,以计算机为核心的企业级的管理系统更为成熟,系统增加了包括财务预测、生产能力、调整资源调度等方面的功能。配合企业实现JIT管理全面、质量管理和生产资源调度管理及辅助决策的功能。成为企业进行生产管理及决策的平台工具。

  E. 电子商务时代的ERP

  Internet 技术的成熟为企业信息管理系统增加与客户或供应商实现信息共享和直接的数据交换的能力,从而强化了企业间的联系,形成共同发展的生存链,体现企业为达到生存竟争的供应链管理思想。ERP系统相应实现这方面的功能,使决策者及业务部门实现跨企业的联合作战。

  由此可见,ERP的应用的确可以有效地促进现有企业管理的现代化、科学化,适应竞争日益激烈的市场要求,它的导入,已经成为大势所趋。


点击此处查看原文 >>

系统分类: 资源共享   |    用户分类: 无分类    |    来源: 转贴

评论(0) | 阅读(188)
发表于:2008-2-29 18:24:54
标签:编程学习  

1

面向对象的含义

面向对象思想

前言:
学编程学的是思想!精通一门编程语言(最好是面向对象的语言)后再去 搞其他的编程语言,你会发现过程是如此的行云流水!因为,你已经把编程的思想掌握了,再去学其他的,无非是学习一种新的语法格式了。
在这里讨论的是怎么去理解面向对象。其中主要会涉及到“类、对象、 继承、属性、方法、静态、重载、隐藏、重构、声明、定义、初始化、赋值等”其中有许多相关技术一代而过。


正文:

1.基本概念:
1.1 类与对象的初探
无论是面向过程的语言也好,面向对象的语言也罢,首先要讲的都是类和对象!现在,站在抽象的角度,我们给“类”下个定义吧!站在抽象的角度,“什么是人类?”首先让我们来看看人类所具有的一些特征,这个 特征包括属性(一些参数,数值)以及方法(一些行为,他能干什么!)。每个人都有身高、体重、年龄、血型等等一些属性。人会劳动、人都会直立行走、人都会 用自己的头脑去创造工具等等这些方法!人之所以能区别于其它类型的动物,是因为每个人都具有人这个群体的属性与方法。“人类”只是一个抽象的概念,它仅仅 是一个概念,它是不存在的实体!但是所有具备“人类”这个群体的属性与方法的对象都叫人!这个对象“人”是实际存在的实体!每个人都是人这个群体的一个对 象。老虎为什么不是人?因为它不具备人这个群体的属性与方法,老虎不会直立行走,不会使用工具等等!所以说老虎不是人!
由此可见-------类描述了一组有相同特性(属性)和相同行为(方法)的对象。在程序中,类实际上就是数据类型!例如:整数,小数等等。整数也有 一组特性和行为。面向过程的语言与面相对象的语言的区别就在于,面向过程的语言不允许程序员自己定义数据类型,而只能使用程序中内置的数据类型!而为了模 拟真实世界,为了更好的解决问题,往往我们需要创建解决问题所必需的数据类型!面向对象编程为我们提供了解决方案。

1.2 内置数据类型与函数:
计算机程序在存储数据时必须跟踪3个基本属性为:
1. 信息存储在何处;
2. 存储的值是多少;
3. 存储的信息是什么类型的;
让我们来看看编程语言的内置数据类型都有哪些!(呵呵,这个不大好说,因为每门语言都有自己独特的数据类型,但这毕竟是少数,比如在JAVA中有 byte类型的数据,而在C++中就没有,希望你能举一反三!)比如整数”int ”,浮点类型的数据”float”!字符串”String”,以及数组还有结构体等等。然而在写程序的时候,根据需要我们会创建一个类型的变量或常量,例 如:由于我们需要创建一个整形的变量i为5,我们就可以这样做,int i = 5;而根据需要我很有可能改变i的值,也就是从新给它赋值,比如让它等与6,就可以在所需的地方改成i = 6;由此我们知道,在“值”上可以发生变化的量就叫变量。不会发生变化的量就叫做常量了,在C++中用count关键字来声明,而在JAVA中则使用 final关键字来声明。由于不同语言的声明格式不一样,这里就不做一一介绍了,详细的内容清查阅相关书籍!
在这里我们主要讨论一下函数,我们可以把函数想象成一个“实现某种特定功能的黑匣子”-------这个功能是由你来设定的,举个例子来说:现在我问 你“2+3等于多少”?我相信你能很快的回答我等于5。让我们来分析分析这句话包含什么信息!首先我要把你的大脑想象成是一个黑匣子,我并不知道也没有必 要知道你的大脑是如何工作的(也就是怎么运算的),我关心的只是我传给你的是什么信息?你对信息做了哪些处理? 以及你返回给我的是什么信息?需要提醒你一下的是每个方法都会返回一个信息给调用者的,除了构造函数外(稍候我会作详细的介绍)。我现在需要把自己当作是 一名程序员,而你呢?当然就是计算机了!计算即可没有人那么聪明,它只会按事先约好的特定的格式运行,我想让它具有如上所述的功能,我就要先定义这个黑匣 子!首先我要告诉这个黑匣子会有两个整数值给你(这就是所谓的参数,是程序员需要给黑匣子的信息),然后就要定义这个黑匣子内部实现这两个整数相加的运算 (这就是黑匣子对数据所做的加工,根据需要,你可以做任何的加工。)。最后再标注它返回给我一个同样是整型的数值(这是黑匣子返回给程序员的信息)。一个 函数就这样定义完了,让我们来看看书写格式:

int addnum(int x,int y){
return x+y;
}

具体的含义是这样的:

int /*返回值类型*/ addnum /*方法(黑匣子)名称*/ (int x,int y/*传入的参数*/){
return x+y; /*内部是想方法(实现相加运算,)并用return返回给调用者结果*/
}

首先请注意上明的“return”语句!return 关键字的含义是向调用者返回紧跟在它后面的信息!就像上面一样,因为我问你,你才会回答我,如果我不问你,你就不用回答我的!在计算机中也一样,定义好这 个函数在哪里调用呢?我只能告诉你,哪里需要就在哪里调用!当然,你可以根据需要去更改参数、返回值以及内部实现,具体到如何定义如何调用你只好去参考相 关的资料了!在这里我只是给你一个思想!
有时你会遇到这样的问题,我让你记住,我的年龄是20岁!从字面上理解,你并没有给我返回信息!然而事实上,你确实给我返回了信息,信息的内容是“无信息,也就是无返回值类型void”。具体的程序如下:

int myAge = 0;
int a="20";
void remAge(int a){
myAge=a;
}

具体的函数说明如下:

int myAge =0; //定义并初始化我的年龄为0;
int a="20"; /*定义变量a等于20*/
void /*返回值类型为无返回值类型*/ remAge /*函数名称*/(int a /*传入的参数*/){
myAge=a; //内部实现方法,注意,没有return返回!!!
}

关于函数的话题还有很多很多,这里就不一一介绍了,我的目的是让你知道函数是怎么一会事儿!为下面的讨论作铺垫!

1.3 指针以及引用:
指针及引用是在C++中有的,JAVA中没有。JAVA中取消了对内存的操作,随之而来的事也取消了操作符重载的操作。不过在稍候我还是会介绍一些操 作符重载的功能等。引用主要还是用在函数参数的传递上。所以我在这里就不做过多的介绍了。他们很实用,有兴趣的同学可以参阅C++相关书籍。
1.4 运算符及控制语句:
还是自己看看相关书籍吧,这里就不再熬述了!

2.深入探讨面向对象:
2.1“类型”的内部细节:
有了上面的知识,我们现在就可以深入的挖掘类的内部实现了。所有的知识点我都会围绕着类与对象展开,在此之前,我希望你能够确信对以上所介绍的基本内容已完全掌握了!
是的,面向对象的编程语言最大的特色就是可以编写自己所需的数据类型,以更好的解决问题。我想我必须要帮你搞清楚“类,对象,属性,方法它们之间的关 系”!就像我前面所说的,人这个“类”是什么也做不了的,因为“人类”只是一个抽象的概念,它不是实实在在的“东西”,而这个“东西”就是所谓的对象。只 有人这个“对象”才能去工作。而类呢?类是对象的描述!对象从类中产生出来!此时,对象具有类所描述的所有的属性以及方法。-------一定要理解这句 话!!!
也许你已经有些不知所措了,没关系!好好的回味一下,我再举个例子!例如电视机,电视机都有工作原理图,那么什么叫电视机呢?只要它能够实现工作原理图的 所有功能的物体,我们都叫它电视机。你想想是不是这么一回事儿?可是,电视机原理图是不能工作的,也就是这个原理图不能收看节目,只有电视机这个“实体 ——即所谓的对象”才能收看节目,也就是说,从类生成出对象之后才算得上是真正的有意义!才能开始工作。此时,电视机拥有电视原理图所描述的所有的属性及 方法!明白了吧,呵呵!
我先前介绍过,类是属性与方法的集合。而这些属性与方法可以被声明为私有的(private),公共的(public)或是受保护(protected)的,他们描述了对类成员的访问控制。下面我分别做一下介绍:
1. 公共的(public):把变量声明为公共类型的之后,那么就可以通过对象来直接访问,一切都是暴露无遗的!也就是说,你的信用卡密码别人也能够直接得到。
2. 私有的(private):如果把变量声明为私有的情况就好多了,想要得到我的信用卡密码,对象必须要调用专用的方法才能够得到。
3. 受保护的(protected):介绍继承时再讨论。
4. 默认控制访问符(friendly)://JAVA中有而C++中没有。
为了实现数据的封装,提高数据的安全性,我们一般会把类的属性声明为私有的,而把类的方法声明为公共的。这样,对象能够直接调用类中定义的所有方法,当对 象想要修改或得到自己的属性的时候就必须要调用以定义好的专用的方法才能够实现。你想想,你会把你的信用卡密码公布出来嘛?呵呵!所以,我们提倡的是: “对象调方法,方法改属性”;
2.2通过实例看内存分配:
说了这么多,让我们来看一个实例吧!比如:现在我们要编写某家公司员工管理系统,你认为最合适的数据类型是什么?我认为是员工个人!但是在面向过程的 语言中,这样做是不允许的,因为它只能使用语言中的内部数据类型!而员工不在这个内部数据类型之内!也许有人会说可以用C语言中的struct,好注意! 毕竟它是类的基础!如果你以前是一名面C或B的程序员,请你忘掉这些,让我们一起看看如何用类来实现这一切吧!
某家公司的员工是人类的一个特殊群体,它除了具备人类的所有特性与方法外,它还有额外的特性与方法,比如她有她的工资、信用卡密码、作息时间等等,这 些特性以及工作内容,工作量等等这些方法。而在计算机中我们该如何定义这个类呢?下面我将写出它的格式,让你看看在计算机中它是张什么样子的!

/*在此我需要再次声明的是,我用的是JAVA格式,在语法格式上它与C++大不相同!许多细节以及内部操作都有诸多区别,而在思想上确实大同小异的*/
//employee.java
public class employee{
private String name; //员工姓名
private int age; //员工年龄
private char sex; //员工性别
private float emolument; //员工薪水
private boolean lunch; //员工午餐
//……等等
public void heater(){ //这个方法是用来加工员工的午餐
lunch = true;
}
public void setName(String a){ //这个方法是修改员工的姓名
name= a;
}
public String getName(){ //这个方法是得到员工的姓名
return name;
}
//……等等
}

这样我们就定义完了我们所需要的数据类型。现在,让我们来看看它能够干什么以及怎么工作!
我想要做的是,工作室里有一个光杆司令叫“jingwei”,我修改它的名字后对对它进行输出,看看我是怎么做的吧!
注意:请仔细观察对象是如何调用方法的,它使用了“.”操作符!事实上是这样的,对象调用公共的属性或方法时就会使用“.”操作符。
然而在C++中,如果定义一个同类型的指针,该指针调用此对象的方法时,就会使用“->”操作符。更详细的内容清参阅相关书籍了!

//workstation.java
import java.awt.Graphics;
import java.applet.Applet;
public class workstation extends Applet{
private employee jingwei ; //对象的声明,此时并不分配内存!
public void init(){
jingwei = new employee(); /*此时创建对象会调用构造函数,稍候介绍*/
jingwei.setName(“jw”); //设置我的名字
}
public void paint(Graphics g){
g.drawString("my age is "+jingwei.getName(),10,10);//显示我的年龄
}
}

输出结果是:

my name is jw

这串字符串是在输出窗口的x坐标轴为10 px , y坐标轴为10 px的位置。
我现在要做的是,把上面的程序做个大解剖,让你能够看清楚它到底是怎么一回事儿!(我可不时带你去看里面的汇编,呵呵,那个我也不会:)

首先还是来看看我们自定义的数据类型employee,在应用的时候它和int类型的数据没什么两样,一样的需要创建变量(对象),只不过前者是咱自 己定义的,而后这是它内置的。Employee这个类中有许多属性,也有许多方法。而此时,我们不能直接用我们所创建出来的对象调用它的属性进行修改。因 为它是private受保护类型的!我要想修改我的姓名我就要用对象调用setName()这个方法,而我想得到我的姓名就要调用getName()这个 方法。我们完全是按照航线来行走的,这个航线就是“对象调方法,方法改属性”
好的,我真的相信你已经明白了这是怎么一回事儿了!呵呵!仰起航帆,继续前行!
现在让我们一起来看看workstation这个类。这是个主类,和C++中的main()函数的味道差不多。其中,在JAVA中,一个文件只允许有而且必须有一个主类,这个主类用public来声明!他就跟C++中必须要有一个main()函数是一样的。
让我们来看看这个类中的第一条语句!private employee jingwei ;这条语句的作用是声明一个employee的对象jingwei(在C++中就不用声明了)。我想要和你说的是“声明”与“定义”之间的区别。声明只是 告诉计算机将要有这样的一个变量(对象),在内存中它并不为这个变量(对象)分配内存!而只有在定义的时候才会给这个变量(对象)分配内存。(需要说明一 下的是init()方法是完成初始化操作的,在此处定义对象,为对象分配内存。start()方法用来启动浏览器的主线程,paint()方法来显示 Apple的界面。这些是Applet程序所需的,至于Application程序就不需要了,当然了,C++中也不需要他们。关于他们的详细内容清参阅 相关书籍)
紧接着就开始定一个对象了,对jingwei这个对象进行操作才会有实际的意义。千万不要有这种想法:“试图对类进行操作!”就像前面我说的,电视机 原理不能看电视一样!这是毫无意义的!看这条语句jingwei = new employee();它的意思就是定义一个employee类型的对象jingwei。此时,我想告诉你的是:“jingwei这个对想拥有了些什 么”。它拥有了类所描述的所有的属性及方法。下面我一一给你列出来:

/*所有的employee对象都拥有这些属性。每创建一个对象就会从新分配一块内存来存放相应对象的这些属性。我的意思是每个对象都有自己“独特”的一份*/
private String name; //员工姓名
private int age; //员工年龄
private char sex; //员工性别
private float emolument; //员工薪水
private boolean lunch; //员工午餐
/*所有的employee对象都拥有这些方法。但在内存中只有一份*/
public void heater(){ //这个方法是用来加工员工的午餐
lunch = true;
}
public void setName(String a){ //这个方法是修改员工的姓名
name= a;
}
public String getName(){ //这个方法是得到员工的姓名
return name;
}
/*但是,实际上在创建jingwei这个对象时计算机只给这个对象的所有的属性分配了内存,而并没有给方法分配内存。方法只有一个,是属于所有的对象的,所以无论创建了多少个对象,计算机只会为一个方法分配一块内存。*/
我想我还是举个例子吧,不然你非晕倒不可。呵呵!
看我这条语句“private boolean lunch;”公司不管午餐,每个员工都需要带饭。我们现在这样想,公司的空间是所有的内存容量,你的办公桌就是计算机中的内存中的一部分(每个员工都有 一份,是在创建对象时分配的)。你把午饭带到了公司,放在了你的办公桌上。“午饭”占据了你的办公桌的一角(占了你自己“对象”的一块内存容量)。这份午 饭只属于你自己,同样别人的也只属于她自己!所以每个员工(对象)都需要一快空间(内存)来存放自己的午餐(属性)。在计算机中也是这样的,每创建一个对 象,就会在内存中从新分配一块内存来放“午餐——lunch”这个属性(对象所拥有的所有的属性)。
计算机只会为对象的属性分配内存。因为每个对象的都不一样!就像你往公司带的午饭和我往公司带的午饭不一样是一个道理!但方法就不同了。早晨带的饭中 午就凉了,你需要用微波炉来加热。微波炉可不用你带,公司就有(只占公司的一块空间),它放在了午餐桌上。你想想,微波炉属于谁的?它属于所有员工的!因 为每个员工都可以用它。而不必每个员工都带一份。由此可见,每个员工(对象)都有一份午饭(属性),但所有的员工(对象)只一个微波炉(方法)。所有的员 工(对象)都可以通过这个微波炉(方法)来改变自己午餐(属性)的冷热状态。殊途同归!在计算机中也就是这样,方法只有一份,供所有的对象使用!而属性是 每个对象一份,因为每个对象的都不一样。别和我说你还不明白,不然我会撞墙的,呵呵:)

2.3深入探讨函数:

2.3.1构造函数、默认构造函数、 缺省构造函数

对于上面的实例,它已经能完成绝大部分工作了,但它还是不完善的,还有许许多多的细节等到我们去完善!也许有的同学已经注意到了,当我创建完 “jingwei”这个对象时,这个对象的所有的属性都是空的,也就是说:这个对象的姓名是未定的、年龄是未定的、性别是未定的、薪水是未定的、午餐也是 未定的。而我们想把这些属性都添加上去,就还要用对象调用相应的方法,去一个个修改!天啊,这简直是太麻烦了!有没有什么好方法能够在我们创建对象的同时 就完成了对属性赋值的操作呢?哦不,应该说是对属性的初始化呢?当然没问题了,这就需要所谓的构造函数!
构造函数是类中最特殊的函数,它与析构函数的功能正好相反!
从特征上来说:1.它是编程语言中唯一没有返回值类型的函数。
2.它的名称与类的名称必须要完全相同。
3.它必须被声明为公共(public)的类型
4,可以对构造函数进行重载。
5.它在创建对象是自动被调用。
从功能上来说:1.它是对类中的属性进行初始化。
其实,对于上面的程序来说我们没有自己定义构造函数。但是,在这种情况下,系统会自动为我们定义一个“默认构造函数”。他会把数值变量自动赋值为0, 把布尔行变量赋值为false等等(但在C++中,默认构造函数不初始化其成员)。如果程序员定义了构造函数,那么系统就不会再为你的程序添加一个缺默认 造函数了。(在这里,我们提倡的是自己定义构造函数,而不是用系统的默认构造函数)
还是看个实例吧!这样比较清楚一些!

//employee.java

public class employee{

private String name; //员工姓名

private int age; //员工年龄

private char sex; //员工性别

private float emolument; //员工薪水

private boolean lunch; //员工午餐

//……等等

public employee(){ //这个就是“默认”构造函数

name = “jw”; //设置员工姓名

age = 20; //设置员工年龄

sex = “M”; //设置员工性别

emolument = 100; //设置员工薪水

lunch = false; //设置员工午餐

}

public void heater(){ //这个方法是用来加工员工的午餐

lunch = true;

}

//……等等

};

这样,在我们创建“jingwei”这个对象的同时,它的所有的属性也被初始化了!显然,这大大的提高了工作效率,但是,它还是不符合要求。想想看, 如果我们现在创建这个类型的第二个对象的时候会发生什么事情?告诉你,除了对象的“名”(这个名称不在是对象属性中的名称,而是对象本身的名称)不一样 外,其所有的“属性值”都一样!比如:现在我们创建第二个对象flashmagic,然而我会发现这个对象的所有的属性和jingwei这个对象的所有的 属性完全相同。而我们只能在用对象的方法去改变着写属性了!很显然,这种方法不大好!我们需要一种方法在创建对象的时候为对象的属性赋予“我们想要的 值”。
相信你也看到了,默认构造函数就显得无能为力了。我们需要的是带参数的构造函数,在创建对象时,我们把参数传给构造函数,这样就能完成了上述的功能!口说无凭,还是来看个实例吧:

//employee.java

public class employee{

private String name; //员工姓名

private int age; //员工年龄

private char sex; //员工性别

private float emolument; //员工薪水

private boolean lunch; //员工午餐

//……等等

public employee(String n,int a,char s,float e,boolean l){ //看这个构造函数

name = n; //设置员工姓名

age = a; //设置员工年龄

sex = s; //设置员工性别

emolument = e; //设置员工薪水

lunch =l; //设置员工午餐

}

public void heater(){ //这个方法是用来加工员工的午餐

lunch = true;

}

//……等等

};

这样一来,在创建对象的同时我们就可以给他赋予我们想要的值,很显然,这可就方便多了。哦,对了!还没有告诉你怎么创建呢!哈哈,往前翻几页你会看到这句话:
jingwei = new employee();这是创建一个对象,而我们把它改成
jingwei = new employee("jingwei",20,'M',100,false);这样一来,所有的工作都完成了,呵呵!(在创建对象的同时赋予了我们想要的“初值”)

2.3.2重载构造函数:
我还是先把概念给你吧,让你有个认识,随后我们在进行论述。
在JAVA中:
1. 函数重载是一个类中声明了多个同名的方法,但有不同的参数个数和参数类型。
2. 函数重构是指在子类中声明与父类同名的方法,从而覆盖了父类的方法。重构解决了子类与父类的差异问题。(在讨论到继承时我会详细说明)
在C++中:
1. 数重载的概念一样。
2. 重构的概念可就不一样了,C++中功能更为庞大的虚函数。更详细内容这里就不错过多介绍了!
其实关于重载的概念你并不陌生,在编程中相信你也接触过。呵呵!让我们来举个操作符重载的例子你就会明白了,(JAVA中不支持这个功能)我们定义三个整数变量:

int i1=2, i2=3,i3=0;
i3 = i1 + i2;

此时i3=5;加号实现了两个数相加的运算功能。然而我们现在要定义三个字符串变量:

String str1=”jing”, str2=”wei”,str3=””;
str3 = str1 + str2;

此时str3 = “jingwei”;加号实现了两个字符串相加的运算功能。同样是加号,既可以把两个整型的变量加在一起,也可以把两个字符串类型的变量加在一起。同一个 操作符实现了不同的功能------这就是所谓的操作符重载(嘿嘿,我说你一定见过吧:)!不就好像是汉语中的一词多意一样!我需要说明一下的是,C++ 中的操作符重载可没有这么简单。比如,我们可以对两个自定义类型的对象进行相加的运算,进行赋值的运算。这样书写简洁明了,而且非常实用。当然,关于操作 符重载的话题太多了,有兴趣再看看书吧!
我们把操作符的话题在转到函数上来,我们一直强调的是“对象调方法”------对象其实调的是方法的“名称”。而我们现在要对方法进想重载,也就是 定义多个相同名称的函数,这样计算机在调用的时候不会混淆嘛?我想应该不会的,呵呵,因为仅仅是函数名称相同,而我们在调用函数时会把参数传递给他的。既 是没有参数也是一种参数传递参数的信息(信息为无参数)!然而由于参数类型、参数数量、返回值类型不同我们就可以对相同名称的函数进行区分?/ca>

点击此处查看原文 >>

系统分类: 单片机   |    用户分类: 无分类    |    来源: 转贴

评论(0) | 阅读(181)
发表于:2008-2-29 15:47:52
标签:编程学习  

1

c语言中break的使用

  break的作用是跳出这个循环(如果这个break或者continue在循环中的if语句里面,不是跳出if语句,而是跳出循环语句),执行这个循环的大括号以后的语句,break在循环语句中是这样,在switch语句用功能也是这样的,而continue是当条件满足的时候不执行这个循环后面的语句,从这个循环的开始重新执行。

点击此处查看原文 >>

系统分类: 单片机   |    用户分类: 无分类    |    来源: 转贴

评论(0) | 阅读(148)
总共 , 当前 /