商店类中有 sell() 方法,顾客类通过该方法购物。以下代码定义了顾客类通过北京网店 BeijingShop 购物:<br>classCustomer {<br>publicvoidshopping(BeijingShop shop) {<br>//购物<br>System.out.println(shop.sell());<br>}<br>}<br>但是,这种设计存在缺点,如果该顾客想从另外一家商店(如上海网店 ShanghaiShop)购物,就要将该顾客的代码修改如下:<br>classCustomer {<br>publicvoidshopping(ShanghaiShop shop) {<br>//购物<br>System.out.println(shop.sell());<br>}<br>}<br>顾客每更换一家商店,都要修改一次代码,这明显违背了开闭原则。存在以上缺点的原因是:顾客类设计时同具体的商店类绑定了,这违背了依赖倒置原则。解决方法是:定义“北京网店”和“上海网店”的共同接口 Shop,顾客类面向该接口编程这样,不管顾客类 Customer 访问什么商店,或者增加新的商店,都不需要修改原有代码了,其类图如图 1 所示。<br>图1 顾客购物程序的类图
上次呢,我们讲解了容斥问题题型的由来和它的其中一个题型,今天呢,我们来学习第二个题型:容斥原理之三集合标准型公式。 三集合标准型:是指把一个整体分成三部分,且告知两两相交的地方,并有三者都满足的,这样的题就是三集合标准型。如:某专业有学生50人,现开设有甲、乙、丙三门必修课。有40人选修甲课程,36人选修乙课程,30人选修丙课程,兼选甲、乙两门课程的有28人,兼选甲、丙两门课程的有26人,兼选乙、丙两门课程的有24人,甲、乙、丙三门课程均选的有20人,问三门课程均未选的有多少人? 画图来看: 公式:A+B+C-(AB+BC+AC)+ABC=总数-都不 公式应用: 【例】某专业有学生50人,现开设有甲、乙、丙三门必修课。有40人选修甲课程,36人选修乙课程,30人选修丙课程,兼选甲、乙两门课程的有28人,兼选甲、丙两门课程的有26人,兼选乙、丙两门课程的有24人,甲、乙、丙三门课程均选的有20人,问三门课程均未选的有多少人?( ) C.3人D.4人 【解析】40+36+30-28-26-24+20=50-X,解得X=2。 以上呢,是容斥原理的第二个公式,希望能对大家的备考有所帮助。 华图教育于海艳 2018年5月26日