当前位置: 首页 > news >正文

知名网站建设联系电话网络营销软件哪个好用

知名网站建设联系电话,网络营销软件哪个好用,网站建设包括两个方面,WordPress 导航 自适应我是从学习Java编程开始接触OOP(面向对象编程)#xff0c;刚开始使用Java编写程序的时候感觉很别扭#xff0c;因为我早以习惯用C来编写程序#xff0c;很欣赏C的简洁性和高效性#xff0c;喜欢C简练而表达能力丰富的风格#xff0c;特别忍受不了Java运行起来慢吞吞的速度…  我是从学习Java编程开始接触OOP(面向对象编程)刚开始使用Java编写程序的时候感觉很别扭因为我早以习惯用C来编写程序很欣赏C的简洁性和高效性喜欢C简练而表达能力丰富的风格特别忍受不了Java运行起来慢吞吞的速度相对冗长的代码而且一个很简单的事情要写好多类一个类调用一个类心里的抵触情绪很强。 我对Java的面向对象的特性琢磨良久自认为有所领悟也开始有意识的运用OOP风格来写程序然而还是经常会觉得不知道应该怎样提炼类面对一个具体的问题的时候会觉得脑子里千头万绪的不知道怎么下手一不小心又会回到原来的思路上去。 举个例子要发广告邮件广告邮件列表存在数据库里面。倘若用C来写的话一般会这样思考先把邮件内容读入然后连接数据库循环取邮件地址调用本机的qmail的sendmail命令发送。 然后考虑用Java来实现既然是OOP就不能什么代码都塞到main过程里面于是就设计了三个类 一个类是负责读取数据库取邮件地址调用qmail的sendmail命令发送 一个类是读邮件内容MIME编码成HTML格式的再加上邮件头 一个主类负责从命令读参数处理命令行参数调用发email的类。 把一件工作按照功能划分为3个模块分别处理每个类完成一件模块任务。 仔细的分析一下就会发现这样的设计完全是从程序员实现程序功能的角度来设计的或者说设计类的时候是自低向上的从机器的角度到现实世界的角度来分析问题的。因此在设计的时候就已经把程序编程实现的细节都考虑进去了企图从底层实现程序这样的出发点来达到满足现实世界的软件需求的目标。 这样的分析方法其实是不适用于Java这样面向对象的编程语言因为如果改用C语言封装两个C函数都会比Java实现起来轻松的多逻辑上也清楚的多。 我觉得面向对象的精髓在于考虑问题的思路是从现实世界的人类思维习惯出发的只要领会了这一点就领会了面向对象的思维方法。 举一个非常简单的例子假使现在需要写一个网页计数器客户访问一次页面网页计数器加1计数器是这样来访问的http://hostname/count.cgi?idxxx 后台有一个数据库表保存每个id一个id对应一个被统计访问次数的页面的计数器当前值请求页面一次对应id的计数器的字段加1(这里我们忽略并发更新数据库表出现的表锁定的问题)。 如果按照一般从程序实现的角度来分析我们会这样考虑首先是从HTTP GET请求取到id然后按照id查数据库表获得某id对应的访问计数值然后加1更新数据库最后向页面显示访问计数。 现在假设一个没有程序设计经验的人他会怎样来思考这个问题的呢他会提出什么样的需求呢他很可能会这样想 我需要有一个计数器这个计数器应该有这样的功能刷新一次页面访问量就会加1另外最好还有一个计数器清0的功能当然计数器如果有一个可以设为任意值的功能的话我就可以作弊了。 做为一个没有程序设计经验的人来说他完全不会想到对数据库应该如何操作对于HTTP变量该如何传递他考虑问题的角度就是我有什么需求我的业务逻辑是什么软件应该有什么功能。 按照这样的思路(请注意他的思路其实就是我们平时在生活中习惯的思维方式)我们知道需要有一个计数器类 Counter有一个必须的和两个可选的方法 getCount() // 取计数器值方法 resetCounter() // 计数器清0方法 setCount() // 设计数器为相应的值方法   把Counter类完整的定义如下   public class Counter { public int getCount(int id) { } public void resetCounter(int id) { } public void setCount (int id, int currentCount) { } } 解决问题的框架已经有了来看一下如何使用Counter。在count.cgi里面调用Counter来计数程序片断如下 // 这里从HTTP环境里面取id值 ... Counter myCounter new Counter(); // 获得计数器 int currentCount myCounter.getCount(id); // 从计数器中取计数 // 这里向客户浏览器输出 ... 程序的框架全都写好了剩下的就是实现Counter类方法里面具体的代码了此时才去考虑具体的程序语言实现的细节比如在getCount()方法里面访问数据库更新计数值。 从上面的例子中看到面向对象的思维方法其实就是我们在现实生活中习惯的思维方式是从人类考虑问题的角度出发把人类解决问题的思维方式逐步翻译成程序能够理解的思维方式的过程在这个翻译的过程中软件也就逐步被设计好了。 在运用面向对象的思维方法进行软件设计的过程中最容易犯的错误就是开始分析的时候就想到了程序代码实现的细节因此封装的类完全是基于程序实现逻辑而不是基于解决问题的业务逻辑。 学习JDBC编程的经典错误问法是“我怎样封装对数据库的select操作” 面向对象的设计是基于解决业务问题的设计而不是基于具体编程技术的设计。我不会去封装select语句的我只封装解决问题的业务逻辑对数据库的读取是在业务逻辑的编码实现阶段才去考虑的问题。 回过头看上面那个发广告邮件的例子应该如何应用面向对象的思维方法呢 对于一个邮件来说有邮件头邮件体和邮件地址这三个属性发送邮件需要一个发送的方法另外还需要一个能把所有邮件地址列出来的方法。所以应该如下设计 类JunkMail 属性 head body address 方法 sendMail() // 发送邮件 listAllMail() // 列邮件地址 用Java来表示 public class JunkMail { private String head; private String body; private String address; public JunkMain() { // 默认的类构造器 // 从外部配置文件读邮件头和邮件体 this.head...; this.body...; }   public static boolean sendMail(String address) { // 调用qmail发送email }   public static Collection listAllMail() { // 访问数据库返回一个邮件地址集合 } } 当把JunkMail设计好了以后再调用JunkMail类完成邮件的发送将是非常轻松的事情。 如果说传统的面向过程的编程是符合机器运行指令的流程的话那么面向对象的思维方法就是符合现实生活中人类解决问题的思维过程。 在面向对象的软件分析和设计的时候要提醒自己不要一上来就去想程序代码的实现应该抛开具体编程语言的束缚集中精力分析我们要实现的软件的业务逻辑分析软件的业务流程思考应该如何去描述和实现软件的业务。毕竟软件只是一个载体业务才是我们真正要实现的目标。 但是在设计过程中心里却往往在担心如果我完全不去考虑程序代码的实现的话那么我怎么知道我的设计一定合理呢我怎么知道我设计的类、接口一定可以实现呢所以经常可以看到的现象就是 在设计过程中虽然知道不能过早考虑代码实现但是每设计一个类一个接口心里都要不知不觉的用自己熟悉的编程语言大概的评估一下看看能否编出来因此一不小心就会又回到按照程序功能实现的思路进行设计的老路上去了。 举个例子来说明在做Web程序设计的时候经常要遇到分页显示数据的情况。比如说需要把系统中所有的用户都列出来这样的功能。假设使用User类来表示用户增加用户addUser()删除用户deleteUser()查询所有用户listUsers()方法。而数据库中有一个user表一条记录是一个用户的信息。下面考虑一下User类的方法的实现 addUser()和deleteUser()方法都好实现就是对数据库增加记录和删除记录。对于listUsers()方法其实就是对user表的select取出一个记录集。但是该怎么从listUsers()方法中得到所有用户的列表呢 一个方法调用的返回值只有一个没有多个所以很多情况下采用的办法就是返回值定义为集合类型比如Vector。这样就可以在listUsers()方法的具体代码实现的时候从数据库依次取出一个个记录插入到Vector里面来。在主程序里面调用listUsers()方法可以返回一个Vector然后再对Vector遍历操作就可以得到用户列表了。 public class User {   public static void addUser(...) { // 数据库insert一条记录 }   public static void deleteUser(...) { // 数据库delete一条记录 }   public Vector listUsers(...) { // 数据库select结果放到一个集合里面 } } 这样的设计基本合理但是仍然有点小问题。因为在设计的时候就考虑到了用Java的集合类Vector来实现对不定长数据集的存放因而违反了面向对象设计的一个原则在设计的时候不应过早的考虑具体程序语言的实现。所以必须用抽象的方法和具体实现无关的方法来表达业务逻辑。 我们知道通常对具有集合特征的数据结构进行遍历通常可以使用next和hasNext方法next实现取下一个用户hasNext判断是否还有元素。 因此我们定义一个接口Iterator这个接口中定义两个方法next和hasNext public interface Iterator { public boolean hasNext() { } public Object next() { } }   而User类的listUses方法返回值 改为Iterator接口的实现类:   public class User { ... public Iterator listUsers() { } ... } 这样就把User类的设计和具体的实现方法分离开了因为此时任何实现了next()和hasNext()方法的类都可以做为listUsers的返回值都可以被用来表达“用户列表”而不仅仅可以使用Vector而已。 比如我可以用ArrayList来表达用户列表因为ArrayList也实现了Iterator当然我也可以自己专门写一个类来存放用户列表只要实现next()和hasNext()方法就行了。 这样在具体的编写代码的时候程序员具有了最大的灵活性可以根据具体的情况采用不同的编程方法来存放用户列表。特别是降低了程序的耦合度提高了程序的可移植性。对于上面那个JunkMail的listAllMail()方法也同样应该改为接口类型。 然后在主程序里面就这样来使用User类的listUsers方法 User myUser new User(); Iterator iterator myUser.listUsers(); while (iterator.hasNext()) { iterator.next(); } 这样就可以完全不用考虑程序代码实现了从高层次上把功能抽象出来定义成为接口同时又可以把系统设计的很合理完全根据业务的需求来进行设计。 结语 通过上面的几个例子的设计说明使用面向对象的思维方法其实是一个把业务逻辑从具体的编程技术当中抽象出来的过程而这个抽象的过程是自上而下的非常符合人类的思维习惯也就是先不考虑问题解决的细节把问题的最主要的方面抽象成为一个简单的框架集中精力思考如何解决主要矛盾然后在解决问题的过程中再把问题的细节分割成一个一个小问题再专门去解决细节问题。 因而一旦牢牢的抓住了这一点你就会发现在软件设计和开发过程中你自己总是会不知不觉的运用面向对象的思维方法来设计和编写程序并且程序的设计和开发也变得不再那么枯燥而一个合理运用面向对象技术进行设计和架构的软件更是具备了思维的艺术美感。最后愿面向对象的思维方法也能给您的程序设计之路带来创作的乐趣。 转载于:https://www.cnblogs.com/FlyEagle/archive/2005/08/23/220931.html
http://www.zqtcl.cn/news/181664/

相关文章:

  • 网站配色怎么对网站的数据库做管理
  • 企业网站效果图wap网站
  • 网站建设优化托管跨境电商怎么做流程
  • 昆明网站建站平台在线阅读网站开发教程
  • pv3d 优秀网站18种最有效推广的方式
  • 一站式网站建设顾问网站建设公司专业网站科技开发
  • python做网站比php好网站开发财务费用
  • 图片上传网站变形的处理北京网站建设有哪些公司
  • 昆山品牌网站建设wordpress 浮动二维码
  • 网站网页建设论文cms免费源码
  • wordpress登录的图片不显示seo竞价网站建设
  • 邢台做移动网站找谁网上推广平台哪个好
  • 做网站准备广州短视频拍摄公司
  • 网站建设学什么软件做电影资源网站有哪些
  • 怎么样让百度搜到自己的网站wordpress的短代码
  • 聊城专业网站建设公司电子商务网站建设与维护李建忠下载
  • icp备案网站接入信息怎么写长兴县网站建设
  • 如何在网上注册公司网站网站不想让百度收录
  • 服务器做jsp网站教程视频免费的舆情网站app下载
  • 肇庆网站建设方案优化家居定制类网站建设
  • 自助建站加盟备案的网站有什么好处
  • 科技公司企业网站建设重庆seo优化
  • 空间站天宫vr全景尚层装饰
  • 有没有专门做中考卷子的网站网络公司推广公司
  • 网站建设费用如何列支wordpress页面构建
  • 用dw做网站怎么做出下拉菜单企业进行网站建设的方式有( )
  • 纯静态网站索引怎么做如何用wampp 做网站
  • 怎样做网站吸引人wordpress数据可视化插件
  • 网站运营管理教材中国设计之窗官方网站
  • 高端网站设计高端网站制作P2P网站怎么建设