O especial Alice, exibido em dezembro pela TV Globo, vai voltar em pelo menos quatro episodios.Com texto de Mauro Wilson, direcao do Guel Arraes, as historias se passam via relacao de Maria Flor, Pedro Neschling e Bernardo Marinho.Ela adora sexo. Eles tambem. Cada qual com suas especificidades na cama. Mas, ao contrario do que possa parecer, os tres sequer se beijam em cena, ficam so sugestao.So de imaginar os dois, fico ate com febre. Ainda nao ha data para a estreia. De acordo com Meyer (1997), classes deverao ser abertas para extensao, mas fechadas para modificacao. Esse e o OCP, Principio do Aberto/Fechado. Esse principio estabelece que as classes que estendam alguma outra classe devem utilizar as funcionalidades da classe estendida sem que essa superclasse precise ser alterada. Isso significa que se o principio for obedecido, o acrescimo de novas funcionalidades em um software nao implica em alteracao de suas classes, mas apenas na introducao de novas.Veja o exemplo do metodo totalPrice, desenvolvido para calcular preco de alguns tipos de pecas:public class Part {public double totalPrice(Part[ ] parts) {double total = 0.0;for (int i = 0; i < parts.length; i++) {total += parts[i].getPrice( );}return total;}}public class MotherBoard extends Part{public double getPrice( ){super.getPrice();}}public class Memory extends Part{public double getPrice( ){super.getPrice();}}E se devido ao aumento de imposto repentino de alguns produtos fosse necessario cobrar um preco adicional sobre certas pecas? Por exemplo, se os precos de memoria e de placa mae tivessem que ser majorado em 30% e 45%, respectivamente, uma solucao seria alterar o metodo totalPtrice para:public double totalPrice(Part[ ] parts) { double total = 0.0; for (int i = 0; i < parts.length; i++) { if (parts[i] instanceof Motherboard) total += (1.45* parts[i].getPrice( )); else if (parts[i] instanceof Memory) total += (1.30* parts[i].getPrice( )); else total += parts[i].getPrice( );}return total;}Imagine que fosse necessario agora diferenciar uma nova peca, seria necessario inserir um novo if na condicao e ela poderia ficar cada vez maior a medida que a lista de produtos com precos diferenciados aumentasse. Essa nova estrutura funciona como um switch e deve ser evitada, pois, prejudica a manutenibilidade do codigo uma vez que, a necessidade de uma alteracao pode desencadear uma serie de outras alteracoes e tornar o codigo cada vez mais complexo.Uma melhor solucao e evitar o uso do switch, preservar o totalPrice original e embutir as variacoes de preco nos metodos getPrice de cada peca, como mostra o codigo a seguir.public class Part {private double basePrice;public void setPrice(double price){basePrice=price;}public double getPrice( ){ return basePrice;}public double totalPrice(Part[ ] parts) {double total = 0.0;for (int i = 0; i < parts.length; i++) {total += parts[i].getPrice( );}return total;}}public class MotherBoard extends Part{public double getPrice( ){return 1.45*super.getPrice();}}public class Memory extends Part{public double getPrice( ){return 1.30*super.getPrice();}}Na solucao acima, o acesso ao atributo que contem o preco base foi restringido e as subclasses passaram a utilizar o metodo de forma especifica. Nesse caso, a classe Part ficou aberta para extensao e fechada para modificacao e nao precisa ser alterada a cada vez que uma peca sofrer alteracao de preco ou uma nova peca com um