Buscar

Programação Orientada a Objetos (SENAC) - 2024

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Aula 01
Programação Orientada a Objetos (POO)
Representação com Objetos
Reutilização de Códigos
Herança - Pai > Filho
Polimorfismo
Encapsulamento - capacidade de esconder detalhes da classe
Abstração
Há várias formas de pensar a construção de um programa, e a elas damos o nome de “paradigmas de linguagem de programação”.
Segundo o dicionário online Dicio, um objeto é uma “coisa material que pode ser percebida pelos sentidos (visão, audição, tato, olfato e paladar): uma bola é um objeto, um lápis é um objeto, um celular é um objeto” (OBJETO, 2023).
Cada Objeto possui características diferentes
Cada Objeto possui um conjunto de Atributos diferentes
Segundo Barnes e Kölling (2010), “os objetos podem ser categorizados e uma classe descreve – de maneira abstrata – todos os objetos de um tipo particular”.
Classe é Genérica e Objeto é Específico
Classe > Objeto > Atributo
1x Classe pode possuir vários Objetos
1x Objeto pode possuir vários Atributos
Lembre-se: um objeto não é uma definição genérica sobre algo, mas uma coisa material. Uma bola vermelha de borracha é um objeto, e uma bola branca com detalhes pretos e fabricada com couro é outro objeto. Ainda que as duas sejam bolas (mesma categoria), trata-se de objetos distintos.
Classes é uma representação genérica de um conjunto de objetos
Objetos são coisas específicas do mundo real
Bola > Bola Azul Plástico
 Bola Vermelha Couro
 
Classe: Bola
Objeto(s): Bola Azul Plástico, Bola Vermelha Couro
Atributo(s): Cor, Material
Se dermos valores aos atributos, estamos definindo objetos
Uma Classe deve ter um nome que a represente, mas, além do nome, ela pode ter:
• campos/atributos/propriedades, que representam as características da classe (por exemplo, para uma cadeira, um campo pode ser a quantidade de pernas, e outro campo pode ser o material de fabricação);
• métodos, que representam o comportamento de uma classe (por exemplo, a classe Calculadora possui métodos como somar, subtrair, etc., enquanto para a classe Cachorro um método possível poderia ser latir); e
• construtores, métodos especiais que inicializam uma classe no momento de sua criação (veremos mais sobre construtores na prática).
Abstração - “abstração é a capacidade de ignorar detalhes das partes para focalizar a atenção em um nível mais elevado de um problema”.
Encapsulamento - No encapsulamento, como no carro, criamos uma forma de esconder outras classes. Por exemplo, no caso da conta bancária, escondemos a lógica usada para fazer depósitos e saques. Essa técnica permite esconder os detalhes de implementação de uma classe.
Atributos e Métodos private só podem ser acessados dentro da classe em que foram declarados, enquanto atributos descritos como public (públicos) podem ser acessados dentro e fora da classe. Com esses controles de acesso, conseguimos implementar a técnica de encapsulamento.
Quando projetamos as classes, usamos a herança e o polimorfismo para construir programas melhores. A herança permite criar classes que herdam comportamentos e atributos de outra classe, mas possibilitando que as classes filhas tenham comportamentos especializados – ou seja, além da herança, essas novas classes podem definir novos métodos e atributos. Já o polimorfismo é uma técnica bem útil para mudar comportamentos nas classes filhas ou até mesmo para permitir a interação entre classes que não se conhecem.
Na POO, o design orientado a objetos (OOD, do inglês object-oriented design) ajuda a projetar e a modelar o sistema. Nesse ponto, trabalhamos com o modelo conceitual do sistema a fim de identificar, definir e projetar classes e objetos de um sistema complexo, bem como seu relacionamento e implementação.
De acordo com Fowler (2005, p. 25), “UML (Unified Modeling Language) é uma família de notações gráficas, apoiada por um metamodelo único, que ajuda na descrição e no projeto de sistemas de software”. Assim, a UML é um modo de modelar e desenhar sistemas de forma gráfica que nos ajuda a representar as abstrações dos objetos a fim de facilitar discussões e até implementar classes.
UML - linguagem gráfica de modelagem orientada a objetos
Classes são representações genéricas de um conjunto de objetos, além de ser um dos componentes básicos da orientação a objeto, por exemplo, um carro possui uma cor, aceita um tipo de combustível e corre.
Classes e Objetos são conceitos diferentes, mas complementares. A classe permite ao desenvolvedor criar uma descrição formal sobre um conjunto de objetos que são agrupados por suas características e comportamentos. Por exemplo: objeto 1 é um carro vermelho com motor Flex e que corre; objeto 2 é um carro azul com motor a gasolina e que corre; objeto 3 é um carro prata a álcool e que corre. Os três objetos podem ser descritos por uma classe que possui dois atributos, “cor” e “combustível” e por um único comportamento “correr”. Logo, classe é uma definição genérica de um grupo de objetos, e um objeto é uma instância dessa classe, a qual tem valores atribuídos e comportamentos associados.
Classe – Genérico
Objeto – Específico (pode conter vários atributos)
Atributos – Variáveis
Métodos – funções, comportamentos, ações
	Classe
	Carro
	Atributo(s)
	Cor – Ano
	Objeto(s)
	Carro Azul 2020 
	Método(s)
	Andar
Aula 02
Em POO, o termo encapsulamento se refere às classes, nas quais conseguimos reunir, sob um mesmo nome, um conjunto de atributos (propriedades do objeto) e funções (comportamento dos objetos).
Modificadores de Acesso:
· public: acesso público, qualquer outra classe tem acesso; e 
· private: somente a classe a qual pertence tem acesso. 
Em C#, para comparar um texto (string) com outro, é necessário usar o método Equal. Sugiro a leitura dessa parte da documentação para você saber as diversas formas de uso deste método (texto em inglês). No exemplo, é possível fazer a comparação ignorando letras maiúsculas e minúscula, basta usar o seguinte código:
String.Equals(tipo, "herói", StringComparison.OrdinalIgnoreCase)
Construtor terá o mesmo nome da classe
Aula 03
A herança, um dos pilares da programação orientada a objetos, permite a nós, desenvolvedores, usar técnicas avançadas que facilitam a manutenção e a reutilização do código (SCHILDT; SKRIEN, 2013).
A herança pertence às classes e permite passar características para classes herdeiras.
Temos a classe-base, ou pai, que fornece a herança, e temos a subclasse, ou classe derivada, que herda as características da classe-base. 
Tipos de Herança:
· Herança Simples
· Herança Hierárquica
· Herança Multinível
Em C# não existe herança múltipla, um tipo em que uma subclasse pode herdar características de duas ou mais classes-base ao mesmo tempo.
Na herança, as subclasses herdam todos os atributos e métodos da classe-base, mas não herdam os construtores (estáticos e não estáticos) nem os finalizadores (destrutores). Além disso, os modificadores de acesso (private, public e protected) afetam essa herança. No nosso exemplo, se a classe A tiver algum atributo ou método privado, as subclasses dela não os herdarão. Já se o atributo ou método for protected, somente a primeira subclasse na hierarquia conseguirá herdar, a próxima não.
Polimorfismo:
· Sobrecarga de Métodos (overloading)
· Substituição de Métodos ou Sobreposição de Métodos (overriding)
Sobrecarga de métodos pode ser usada em qualquer classe, e sobrescrita de métodos somente em subclasses.
A sobrecarga de métodos consiste em criar dois ou mais métodos com o mesmo nome, porém com parâmetros diferentes. Fazer isso em subclasses ou em classes que não herdam de nenhuma outra é possível, visto que a sobrecarga pode ser de métodos herdados ou de métodos da própria classe.
A sobrescrita de métodos, ou overriding, só existe em subclasse, ou seja, classes que herdam de outra classe, uma vez que essa técnica consiste em sobrescrever um método herdado.
Aula 04
Requisitos Funcionais: o que o software irá fazer, o que o cliente quer...
Requisitos Não Funcionais: usabilidade, confiabilidade...
Aula 05
O que é casode uso em UML?
A UML (Unified Modeling Language) define 13 tipos de diagramas, no conjunto de diagrama de comportamento temos o Diagrama de Caso de Uso que tem por objetivo representar a interação entre atores e o sistema a ser desenvolvido. 
Aula 06
Modelo Conceitual
Da ideação do que queremos desenvolver ao código que deve ser desenvolvido, temos que passar por algumas etapas de design/planejamento. Sobre o modelo de domínio no nível conceitual, é correto afirmar que:
O modelo de domínio no nível conceitual é utilizado para representar o conhecimento específico de uma área diretamente relacionado ao problema. Com ele entendemos melhor quais são as entidades envolvidas, seus atributos e suas relações com outras entidades.
Aula 07
Quando desenvolvemos um código buscamos classes mais coesas e com baixo acoplamento para aumentar a reutilização e facilitar a manutenção, já que a alta coesão significa ter classes com objetivos bem específicos. Além disso, buscar o baixo acoplamento é importante para ajudar a ter a melhor manutenção, visto que ter uma quantidade pequena de dependência entre classes diminui a complexidade do código.
Aula 08
Os padrões GoF são classificados em padrões criacionais, estruturais e comportamentais. Este catálogo conta com um total de 23 padrões. Já os padrões GRASP são divididos em 9 padrões, sendo baixo acoplamento e alta coesão exemplos de padrões deste catálogo.
Anotações:
Modelagem Conceitual - Diagrama de Casos de Uso - Diagrama de Classes

Mais conteúdos dessa disciplina