Questions tagged «oop»

面向对象的编程是一种使用“对象”的编程范式:由数据字段和方法及其相互作用组成的数据结构。

12
如何创建完美的OOP应用程序
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4个月前关闭。 改善这个问题 最近,我正在尝试一家公司“ x”。他们向我发送了一些问题,并告诉我仅解决一个。 问题是这样的- 除免税的书籍,食品和医疗产品外,所有商品的基本销售税税率为10%。 进口税是对所有进口商品征收的附加销售税,税率为5%,且无任何豁免。 当我购买物品时,会收到一张收据,上面列出了所有物品的名称及其价格(含税),最后列出了物品的总成本以及所支付的营业税总额。 营业税的四舍五入规则是,对于n%的税率,p的货架价格包含(np / 100四舍五入至最接近的0.05)营业税额。 “他们告诉我,他们对您的解决方案的设计方面很感兴趣,并希望评估我的面向对象编程技能。” 这就是他们用自己的话说的 对于该解决方案,我们希望您使用Java,Ruby或C#。 我们对您的解决方案的DESIGN ASPECT感兴趣,并希望评估您的面向对象编程技能。 您可以使用外部库或工具进行构建或测试。具体来说,您可以使用单元测试库或构建适用于所选语言的工具(例如,JUnit,Ant,NUnit,NAnt,Test :: Unit,Rake等)。 (可选)您还可以在代码中包含对设计和假设的简短说明。 请注意,我们不希望基于Web的应用程序或全面的UI。相反,我们期待一个简单的基于控制台的应用程序,并对您的源代码感兴趣。 因此,我提供了以下代码-您可以复制粘贴代码并在VS中运行。 class Program { static void Main(string[] args) { try { double totalBill = 0, salesTax = 0; List<Product> productList = getProductList(); foreach (Product prod in productList) …
98 c#  oop 


11
PHP中的多重继承
我正在寻找一种好的,简洁的方法来解决以下事实:PHP5仍然不支持多重继承。这是类的层次结构: 消息 -的TextMessage -------- InvitationTextMessage - EmailMessage -------- InvitationEmailMessage 这两种类型的Invitation *类有很多共同点。我很想有一个共同的父类,邀请函,他们两个都可以继承。不幸的是,他们与当前祖先也有很多共同点……TextMessage和EmailMessage。古典对多重继承的渴望。 解决问题的最轻巧的方法是什么? 谢谢!
97 php  oop  inheritance 


13
接口内的内部类
是否可以在接口内创建内部类? 如果可能的话,由于我们不打算创建任何接口对象,为什么还要创建一个内部类呢? 这些内部类在任何开发过程中都有帮助吗?

3
如何在Web MVC应用程序中实现访问控制列表?
第一个问题 请,请您说明一下如何在MVC中实现最简单的ACL。 这是在Controller中使用Acl的第一种方法... <?php class MyController extends Controller { public function myMethod() { //It is just abstract code $acl = new Acl(); $acl->setController('MyController'); $acl->setMethod('myMethod'); $acl->getRole(); if (!$acl->allowed()) die("You're not allowed to do it!"); ... } } ?> 这是非常糟糕的方法,它的缺点是我们必须将Acl代码添加到每个控制器的方法中,但是我们不需要任何其他依赖项! 下一种方法是制作所有控制器的方法private,并将ACL代码添加到控制器的__call方法中。 <?php class MyController extends Controller { private function myMethod() { ... …

9
无需使用具有长参数列表的构造函数即可构建大型的不可变对象
我有一些大对象(超过3个字段),它们可以并且应该是不变的。每次遇到这种情况时,我倾向于使用长参数列表创建构造函数可憎的对象。 感觉不对,很难使用,并且可读性受到影响。 如果字段是某种类型的集合类型(如列表),那就更糟了。一个简单的方法addSibling(S s)可以极大地简化对象的创建过程,但是使对象可变。 你们在这种情况下使用什么? 我使用的是Scala和Java,但我认为只要语言是面向对象的,问题就与语言无关。 我能想到的解决方案: “带有长参数列表的构造函数可憎” 建造者模式
96 java  oop  scala  immutability 

18
您将如何从对象方法中访问对象属性?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意测验或进一步的讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 从不是getter / setter方法的对象方法中访问对象属性的“纯粹”或“正确”方法是什么? 我知道从对象外部您应该使用getter / setter,但是从内部您只需要这样做: Java: String property = this.property; PHP: $property = $this->property; 还是你会做: Java: String property = this.getProperty(); PHP: $property = $this->getProperty(); 原谅我,如果我的Java有点过时了,距离我用Java编程已经一年了... 编辑: 似乎人们以为我只是在谈论私有或受保护的变量/属性。当我学习面向对象时,我被教导即使每个属性都是公共的,也要对每个属性都使用吸气剂/设置器(实际上,我被告知永远不要公开任何变量/属性)。因此,我可能一开始就从一个错误的假设开始。似乎回答这个问题的人可能是在说您应该拥有公共财产,而那些人不需要吸气剂和塞子,这与我所教的内容和我所谈论的内容背道而驰,尽管也许需要将其讨论为好。不过,这可能是另一个问题的好话题...
96 java  php  oop  theory 

3
为什么有单独的LiveData子类MutableLiveData子类?
看起来MutableLiveData与LiveData仅通过公开setValue()和postValue()方法有所不同,而LiveData它们却受到保护。 有什么理由为此更改创建一个单独的类,而不是简单地将这些方法LiveData本身定义为公共方法? 一般来说,这种继承形式(增加某些方法的可见性是唯一的更改)是否是众所周知的做法,并且在某些情况下它可能有用(假设我们可以访问所有代码)?

5
Javascript从字符串动态调用对象方法
我可以动态调用以方法名称为字符串的对象方法吗?我会这样想: var FooClass = function() { this.smile = function() {}; } var method = "smile"; var foo = new FooClass(); // I want to run smile on the foo instance. foo.{mysterious code}(); // being executed as foo.smile();

17
C#中的工厂模式:如何确保只能由工厂类创建对象实例?
最近,我一直在考虑保护我的一些代码。我很好奇如何确保一个对象永远不能直接创建,而只能通过工厂类的某种方法来创建。让我们说我有一些“业务对象”类,并且我想确保该类的任何实例都具有有效的内部状态。为了实现这一点,我将需要在创建对象之前(可能是在其构造函数中)执行一些检查。没关系,直到我决定我要使此检查成为业务逻辑的一部分。因此,如何安排业务对象只能通过我的业务逻辑类中的某种方法创建而不能直接创建?使用C ++的旧“ friend”关键字的第一个自然愿望将与C#脱节。所以我们需要其他选择... 让我们尝试一些示例: public MyBusinessObjectClass { public string MyProperty { get; private set; } public MyBusinessObjectClass (string myProperty) { MyProperty = myProperty; } } public MyBusinessLogicClass { public MyBusinessObjectClass CreateBusinessObject (string myProperty) { // Perform some check on myProperty if (true /* check is okay */) return new MyBusinessObjectClass …


9
函数式编程语言如何工作?
如果函数式编程语言无法保存任何状态,它们将如何做一些简单的事情,例如从用户那里读取输入内容?他们如何“存储”输入(或存储与此相关的任何数据?) 例如:这个简单的C语言将如何转换为Haskell这样的函数式编程语言? #include<stdio.h> int main() { int no; scanf("%d",&no); return 0; } (我的问题受到了这篇出色的文章的启发:“名词的王国中的执行”。阅读它使我对面向对象的编程到底是什么,Java如何以一种极端的方式实现它以及函数式编程语言如何成为一种更好的理解。对比。)

10
最佳做法:在类定义中对公共/受保护/私有的排序?
我正在从头开始一个新项目,希望它是干净的/具有良好的编码标准。这里经验丰富的开发人员喜欢按什么顺序将内容布置在一个类中? A:1)公共方法2)私有方法3)公共变量4)私有变量 B:1)公共变量2)私有变量3)公共方法4)私有方法 C:1)公共变量2)公共方法3)私有方法4)私有变量 我通常喜欢将公共静态变量放在顶部,但是然后将公共静态方法列在构造函数之前,还是应该始终将构造函数列在最前面?诸如此类的事情... 我知道这很严格,但我只是想知道:什么是最佳做法? PS:不,我不使用Cc#。我知道。我很傻

8
介体与观察者的面向对象设计模式
为了解决我的一些问题,我一直在阅读《四人帮》,并遇到了Mediator模式。 我之前在项目中使用Observer来制作一些GUI应用程序。我有点困惑,因为我发现两者之间没有太大区别。我浏览找到了区别,但没有找到适合我的查询的答案。 有人可以帮我用一个很好的例子来区分两者吗?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.