Disciplina Discipline MAC5714
Tópicos Avançados de Programação Orientada a Objetos

Advanced Topics in Object Oriented Programming

Área de Concentração: 45134

Concentration area: 45134

Criação: 10/05/2022

Creation: 10/05/2022

Ativação: 10/05/2022

Activation: 10/05/2022

Nr. de Créditos: 8

Credits: 8

Carga Horária:

Workload:

Teórica

(por semana)

Theory

(weekly)

Prática

(por semana)

Practice

(weekly)

Estudos

(por semana)

Study

(weekly)

Duração Duration Total Total
4 2 4 12 semanas 12 weeks 120 horas 120 hours

Docentes Responsáveis:

Professors:

Fabio Kon

Alan Mitchell Durham

Objetivos:

Discutir conceitos avançados de abstração, modelagem e desenvolvimento de software orientado a objetos para alunos que já possuam conhecimentos e experiência em programação orientada a objetos. Ao término da disciplina, o estudante será capaz de analisar, criticar e desenvolver complexos sistemas orientados a objetos de acordo com o estado da arte e o estado da prática na área de Orientação a Objetos.

Justificativa:

A programação Orientada a Objetos consolidou-se no século 21 como o principal paradigma para estruturação e desenvolvimento de sistemas de software complexos. Portanto, o domínio de conceitos avançados de POO é fundamental para a formação de recursos humanos para a indústria de software de alto nível.

Conteúdo:

1.Linguagens fortemente tipadas vs. Linguagens dinâmicas. 2. Abstração e Padrões de Projeto de Software. 3. Linguagens de Padrões e escrita de Padrões. 4. Padrões arquiteturais e outros tipos de padrões para projeto e desenvolvimento de software OO. 5. Relação entre OO e desenvolvimento ágil de software: TDD, BDD e gestão de arquiteturas OO de alto nível. 6. Estilos de codificação e beleza de código OO. 7. Arcabouços Orientados a Objetos. 8. Princípios avançados de projeto orientado a objetos tais como os princípios SOLID. 9. Como características avançadas como Reflexão, Metaprogramação, Continuações, Mix- ins e Traits facilitam o desenvolvimento de sistemas flexíveis, enxutos e robustos.

Forma de Avaliação:

A avaliação será realizada através de seminários, projetos e provas. A nota final será calculada pela média ponderada obtida pelo aluno nos instrumentos de avaliação. Nas duas primeiras semanas de aula o docente fixará as datas e o número de provas, projetos e seminários, assim como o a ponderação das notas e o critério de atribuição do conceito final.

Bibliografia:

1. Timothy Budd. An Introduction to Object-Oriented Programming, Addison-Wesley, 3rd edition, 2001. 2. Grady Booch. Object-Oriented Analysis and Design with Applications, Benjamin/Cummings, 3rd edition, 2007. 3. Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley, 1995. 4. Eric Freeman, Elisabeth Robson. Head First Design Patterns: Building Extensible and Maintainable Object-Oriented Software. O'Reilly Media, 2nd edition, 2020. 5. Frank Buschman, Regine Meunier, Hans Rohnert, Peter Sommerland. Pattern-Oriented Software Architecture: A System of Patterns, John Wiley & Sons, 1996. 6. Martin Fowler, Kent Beck, John Brant, William Opdyke, Don Robert. Refactoring: Improving the Design of Existing Code. Addison-Wesley, 2nd edition, 2018. 7. Armando Fox, David Patterson. Construindo Software como Serviço. Strawberry Canyon, 2015. 8. Roberto Martin. Clean Architecture: A Craftsman's Guide to Software Structure and Design, Pearson, 2017. 8. Chamond Liu. SmallTalk, Objects, and Design. iUniverse, 2000. 9. Oscar Nierstrasz, Andrew P. Black, Stéphan Ducasse, Damien Pollet. Squeak by Example. Square Bracket Associates, 2021. 10. Dusty Phillips. Python 3 Object-Oriented Programming: Build robust and maintainable software with object-oriented design patterns in Python 3.8, 3rd Edition, 2018.

Idiomas ministrados:

Português

Languages taught:

Portuguese

Tipo de oferecimento da disciplina:

Presencial

Class type:

Presencial