(Interface segregation principle) prega que dedevemo separar nossos objetos em varias interfaces, e que varias interfaces queinteragem e trocam mensagens entre si sao melhores que um objeto unico deproposito geral. Isso permite flexibilidade e reaproveitamento de codigoatraves de agregacao e composicao. DIP (dependency inversion principle) diz que um objeto nao pode depender daimplementacao concreta de outro, mas sim de sua interface. Esse principio nosguia, junto com o principio acima, a programar orientado a interfaces. Por exemplo, se dois objetos executam a tarefa deenviar um e-mail de confirmacao, logo deveriamos ter um terceiro, responsavelpelo envio do e-mail. No entanto, se temos varios metodos ou bibliotecas deenvio de e-mail e nao queremos que um objeto tenha uma dependencia rigida comuma implementacao especifica, entao transformamos a classe de envio de e-mailem uma classe de servico, extraimos sua interface e, aos objetos que necessitamde enviar um e-mail, entregamos uma variavel do tipo dessa interfae, com umobjeto de envio de e-mail instanciado. 3) Citedesign patterns e para qual finalidade eles existem.R.: Sao padroes de projeto. Um conjuntode abstracoes encontradas em varios projetos que se repetem, pois visam reslverproblemas especificos. No livro Padroes de Projeto, do grupo Gang of Four, existe umcatalogo de padroes de projeto identificados e descritos por ele, como exemplos. Mas este livro nao e a unica fonte.Ha tambem o livro Patterns of Enterprise Application Development de MartinFowler. Dentre os padroes de projeto podemos citar os criacionais factorymethod, que e um metodo que instancia um objeto inicializando-o e devolve-opara o chamador, abstract factory, que e uma classe abstrata com factorymethods que, valendo-se de polimorfismo, delega a criacao de objetos concretosa suas propria implementacoes concretas, singleton, que cria uma instancia deum objeto e permite que apenas um seja criado. Podemos citar tambem o padraostrategy, que permite que uma dentre varias acoes diferentes possam ser escolhidasdependendo do objeto instanciado e o padrao iterator, usado para se navegar emuma colecao de objetos.Escrevi 4 artigos para a revista Clube Delphi sobre padroes de projeto,3 sobre factory method e abstract factory e um sobre singleton, seguem linksabaixo: http://www.devmedia.com.br/websys.4/webreader.asp?cat=3&revista=clubedelphi_122#a-2883http://www.devmedia.com.br/websys.4/webreader.asp?cat=3&revista=clubedelphi_123#a-2969http://www.devmedia.com.br/websys.4/webreader.asp?cat=3&revista=clubedelphi_124#a-3081http://www.devmedia.com.br/websys.4/webreader.asp?cat=3&revista=clubedelphi_133#a-3902 Design patterns nao significam Normas de projeto, e sim padroes deprojeto. Padroes aqui no sentido matematico: uma forma que se repete. 4) Quais os principais conceitos que compoe o DDD.R.: O principal conceito do DDD e o dominio, ouseja, as regras de negocio. O foco do DDD e no dominio e as classes da camadade negocio devem ser o core do sistema. Como apoio a essa tecnica DDD preconiza que o timede desenvolvimento deve adotar o vocabulario, termo se jargoes proprios dodominio e criar um vocabulario padrao para toda a equipe. DDD desencoraja um desenvolvimento em um numeromuit o grande de camadas (por exemplo usando WCF entre a camada de aplicacao ea GUI) porque o uso de DTOs nao enatural a DDD. Nessa metodologia, tudo que foge ao negocio como glue code eplumbing code, e considerado parte da infraestrutura. A esse conceito da-se onome de linguagem ubiqua. Outros conceitos importantes em DDD e o conceito deEntidade (objetos com ID e ciclo de vida, que sao persistidos e tem existenciapor si so) e