Posts

Image
  UML Association vs Aggregation vs Composition Consider the differences and similarities between the classes of the following objects:  pets ,  dogs ,  tails ,  owners . We see the following relationships: owners feed pets, pets please owners ( association ) a tail is a part of both dogs and cats ( aggregation  /  composition ) a cat is a kind of pet ( inheritance  /  generalization ) The figure below shows the three types of association connectors: association, aggregation, and composition. We will go over them in this  UML  guide. The figure below shows a generalization. We will talk about it later on in this UML guide. Association If two classes in a model need to communicate with each other, there must be a link between them, and that can be represented by an association (connector). Association can be represented by a line between these classes  with an arrow indicating the navigation direction . In case an arrow is on bo...
Image
  Facade design Pattern Facade  is a structural design pattern that provides a simplified interface to a library, a framework, or any other complex set of classes.  Problem Imagine that you must make your code work with a broad set of objects that belong to a sophisticated library or framework. Ordinarily, you’d need to initialize all of those objects, keep track of dependencies, execute methods in the correct order, and so on. As a result, the business logic of your classes would become tightly coupled to the implementation details of 3rd-party classes, making it hard to comprehend and maintain.  Solution A facade is a class that provides a simple interface to a complex subsystem which contains lots of moving parts. A facade might provide limited functionality in comparison to working with the subsystem directly. However, it includes only those features that clients really care about. Having a facade is handy when you need to integrate your app with a sophistic...
  What's a design pattern? Design patterns  are typical solutions to commonly occurring problems in software design. They are like pre-made blueprints that you can customize to solve a recurring design problem in your code. You can’t just find a pattern and copy it into your program, the way you can with off-the-shelf functions or libraries. The pattern is not a specific piece of code, but a general concept for solving a particular problem. You can follow the pattern details and implement a solution that suits the realities of your own program. Patterns are often confused with algorithms, because both concepts describe typical solutions to some known problems. While an algorithm always defines a clear set of actions that can achieve some goal, a pattern is a more high-level description of a solution. The code of the same pattern applied to two different programs may be different. An analogy to an algorithm is a cooking recipe: both have clear steps to achieve a goal. On the ot...
Image
                                                                          B. Vanya and Lanterns time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Vanya walks late at night along a straight street of length  l , lit by  n  lanterns. Consider the coordinate system with the beginning of the street corresponding to the point  0 , and its end corresponding to the point  l . Then the  i -th lantern is at the point  a i . The lantern lights all points of the street that are at the distance of at most  d  from it, where  d  is some positive number, common for all lanterns. Vanya wonders: what is the minimum light radius  d  should the lanterns have to light the whole street? Input The first ...
A. Candies and Two Sisters time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output There are two sisters Alice and Betty. You have  n n  candies. You want to distribute these  n n  candies between two sisters in such a way that: Alice will get  a a  ( a > 0 a > 0 ) candies; Betty will get  b b  ( b > 0 b > 0 ) candies; each sister will get some  integer  number of candies; Alice will get a greater amount of candies than Betty (i.e.  a > b a > b ); all the candies will be given to one of two sisters (i.e.  a + b = n a + b = n ). Your task is to calculate the number of ways to distribute exactly  n n  candies between sisters in a way described above. Candies are indistinguishable. Formally, find the number of ways to represent  n n  as the sum of  n = a + b n = a + b , where  a a  and  b b  are positive integers and...