Neste curso, assumimos que voc锚 j谩 sabe desenvolver programas pequenos em Java, mas voc锚 talvez n茫o se sinta ainda confort谩vel em projetar programas mais complexos com m茅todo e organiza莽茫o.
O objetivo deste curso 茅 fazer voc锚 compreender os princ铆pios de orienta莽茫o a objetos por meio da linguagem Java e saber como eficientemente aplicar esses princ铆pios na pr谩tica quando projetando e desenvolvendo software de maneira 谩gil. Os conceitos discutidos e experimentados por voc锚 neste curso ser茫o a base para voc锚 poder compreender os novos conceitos apresentados nos cursos seguintes desta especializa莽茫o. Os conceitos Java apresentados neste curso incluem o seguinte: revis茫o de conceitos b谩sicos de orienta莽茫o a objetos, tais como classes, objetos, m茅todos e atributos, vari谩veis de inst芒ncia e de classe; responsabilidades, colabora莽玫es e cart玫es CRC; testes de unidade, uso de plataforma IDE como o Eclipse; heran莽a, classes concretas e abstratas, interfaces, modificadores de acesso, encapsulamento, m茅todos de acesso; aprofundamento nos conceitos de polimorfismo, sobrecarga e sobreposi莽茫o; associa莽茫o de classes, agrega莽茫o e composi莽茫o; exce莽玫es, delega莽茫o e acoplamento abstrato. Em seguida, voc锚s ser茫o apresentados aos principais princ铆pios usados para organizar o desenvolvimento de programas orientados a objetos com qualidade, dentre os quais, os princ铆pios "Tell, Don't Ask!" e "Law of Demeter". Sempre que conveniente, cada conceito ser谩 representado por meio de diagramas UML. Voc锚 ser谩 exposto a propriedades e anota莽玫es em Java. Ao final deste curso, voc锚 ter谩 amadurecido de tal modo suas habilidades de programa莽茫o que voc锚 ser谩 capaz de implementar vers玫es iniciais do componente de gamifica莽茫o constante do Trabalho de Conclus茫o da Especializa莽茫o, com base nas boas pr谩ticas exercitadas neste curso.