Logo Passei Direto
Buscar

624600_AED (5) - TAD e POO

User badge image
Álef Pedrosa

em

Ferramentas de estudo

Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

1
Pontifícia Universidade Católica de Minas Gerais
Curso de Sistemas de Informação
Algoritmos e Estruturas de Dados
Tipos Abstratos de Dados e Introdução à Programação Orientada a Objetos
TAD – Tipos Abstratos de Dados
• Conceitos Básicos
• TAD na Programação
• Implementação de TAD – Estruturas e Classes
• Exemplos em C#
Introdução à Programação Orientada por Objetos
• Classes e Objetos
• Atributos/Propriedades/Métodos de Classe
• Mecanismos de Visibilidade - Encapsulamento
• Herança e Polimorfismo
• Sobrecarga
• Exemplos em C#
Pontifícia Universidade Católica de Minas Gerais
Curso de Sistemas de Informação
Algoritmos e Estruturas de Dados
Tipos Abstratos de Dados e Introdução à Programação Orientada a Objetos
Bibliografia
• CORMEN, Thomas H. et al. – Algoritmos: Teoria e Prática
• PREISS, Bruno – Estruturas de dados e algoritmos. Rio de Janeiro: Campus, 2001. 584p.
• SZWARCFITER, Jayme Luiz; MARKENZON, Lilian – Estruturas de dados e seus Algoritmos
• ZIVIANI, Nívio – Projeto de Algoritmos com Implementações em Pascal e C – 1993
• VILLAS, Marcos Vianna; VILLASBOAS, Luiz Felipe P. – Programação – Conceitos, Técnicas e Linguagens.
Rio de Janeiro: Campus, 1988. 196p.
• MCDONALD, Matthew – Begining ASP.NET 4 in C# 2010 – Apress – 2010
• MCMILLAN, Michael – Data Structures and Algorithms Using C# – Cambridge University Press – 2007
• Stellman & Greene – C# - Use a Cabeça – 2ª Edição – 2011
• Material de Aula – Algoritmos e Estruturas de Dados – Tiago Braga – 2012
• Material de Aula – Algoritmos e Estruturas de Dados – Camilo Jorge Santos de Oliveira – 2011
2
Pontifícia Universidade Católica de Minas Gerais
Curso de Sistemas de Informação
Algoritmos e Estruturas de Dados
Tipos Abstratos de Dados e Introdução à Programação Orientada a Objetos
Tipos Abstratos de Dados
O que quer dizer Tipo de Dado?
Em Linguagens de Programação a definição de um Tipo de Dado corresponde a uma especificação
clara sobre a faixa de valores permitida para aquele dado e ao conjunto de operações que são
possíveis e definidas para ele.
Tipos simples de dados são grupos de valores indivisíveis, como os de inteiros, booleanos,
caracteres ou reais, por exemplo.
Tipos estruturados de dados, em geral, definem uma coleção de valores simples, ou um agregado
de valores de tipos diferentes.
Pontifícia Universidade Católica de Minas Gerais
Curso de Sistemas de Informação
Algoritmos e Estruturas de Dados
Tipos Abstratos de Dados e Introdução à Programação Orientada a Objetos
Tipos Abstratos de Dados
O que quer dizer Tipo de Dado Abstrato?
É um Modelo Matemático acompanhado das operações definidas sobre ele. Em outras palavras, é
uma definição de um conjunto de dados juntamente com todas as operações possíveis de serem
executadas sobre eles.
Um TAD, em síntese, define um novo tipo de dado, encapsulando uma estrutura de dados e a
implementação sobre as operações definidas sobre eles.
O usuário utiliza essa estrutura e executa as operações definidas para ela, mas não sabe nada
sobre sua implementação. O usuário sabe o que a definição faz, mas não sabe como foi feita. Isso
significa abstração.
Pode-se dizer que um TAD é uma generalização de tipos simples e primitivos de dados
3
Pontifícia Universidade Católica de Minas Gerais
Curso de Sistemas de Informação
Algoritmos e Estruturas de Dados
Tipos Abstratos de Dados e Introdução à Programação Orientada a Objetos
Tipos Abstratos de Dados
Implementação de um Tipo Abstrato de Dados
Nas Linguagens de Programação mais atuais, que se utilizam de um padrão de programação
denominado Orientado a Objetos, a forma mais comum de implementação é através da definição
de uma estrutura de “classes”.
A definição de um TAD através de “struct” (estruturas) é mais antiga embora também muito
utilizada, mesmo nas linguagens atuais.
Pontifícia Universidade Católica de Minas Gerais
Curso de Sistemas de Informação
Algoritmos e Estruturas de Dados
Tipos Abstratos de Dados e Introdução à Programação Orientada a Objetos
Tipos Abstratos de Dados
Exemplo em Linguagem C# - Uso de struct
struct Aluno
{
public int Matrícula;
public string NomeAluno;
public string Telefone;
}
static void Main(string[] args)
{
Aluno xAluno;
xAluno.Matrícula = 253905;
xAluno.NomeAluno = "Pedro";
xAluno.Telefone = "1234.5678";
Definição de um
novo tipo de dado
Uso da Estrutura no
Programa Principal
4
Pontifícia Universidade Católica de Minas Gerais
Curso de Sistemas de Informação
Algoritmos e Estruturas de Dados
Tipos Abstratos de Dados e Introdução à Programação Orientada a Objetos
Tipos Abstratos de Dados
Exemplo em Linguagem C# - Uso de class
class Círculo
{
public double Raio;
public double Área()
{
return Math.PI * Raio * Raio;
}
}
class Program
{
static void Main(string[] args)
{
Círculo MeuCírculo = new Círculo();
MeuCírculo.Raio = 0.5;
Result=MeuCírculo.Área();
...
Definição dos Atributos ou Propriedades da Classe
e dos Métodos ou Funções da Classe
Pontifícia Universidade Católica de Minas Gerais
Curso de Sistemas de Informação
Algoritmos e Estruturas de Dados
Tipos Abstratos de Dados e Introdução à Programação Orientada a Objetos
Tipos Abstratos de Dados
Exercício:
Implemente um TAD chamado de Número Complexo
• Cada número possui os campos Real e Imaginário
• Implemente as Operações:
Soma - Soma dois Números Complexos
Subtrai - Subtrai dois Números Complexos
5
Pontifícia Universidade Católica de Minas Gerais
Curso de Sistemas de Informação
Algoritmos e Estruturas de Dados
Tipos Abstratos de Dados e Introdução à Programação Orientada a Objetos
Introdução à Programação Orientada a Objetos
A Programação Orientada por meio de Objetos é um paradigma, um padrão, um modelo que norteia o
desenvolvimento de programas.
É um modelo bastante aceito e também muito bem estabelecido. Embora o conceito seja antigo, a
Programação Orientada a Objetos ganhou forte impulso a partir da metade dos anos 1990. Dentre as
inúmeras vantagens de seu uso, pode-se citar, principalmente, o aumento da capacidade de abstração
e a reutilização de código.
Reutilização (Reuso):
Um software já desenvolvido para a solução de um problema pode precisar fazer algo
ligeiramente diferente ou a mais do que foi previsto anteriormente. A redefinição e
desenvolvimento de um outro programa pode ser demorada e implicar em gastos muito elevados.
A reutilização permite que somente partes específicas do programa sejam alteradas, não sendo
necessário refazer toda a estrutura do programa.
Pontifícia Universidade Católica de Minas Gerais
Curso de Sistemas de Informação
Algoritmos e Estruturas de Dados
Tipos Abstratos de Dados e Introdução à Programação Orientada a Objetos
Introdução à Programação Orientada a Objetos
Classes e Objetos
“Uma classe é uma implementação de um tipo de objeto. Ela especifica uma estrutura de dados e os
métodos operacionais permissíveis que se aplicam a cada um de seus objetos.”
(MARTIN e ODELL, 1995)
“Um objeto é qualquer coisa, real ou abstrata, a respeito da qual armazenamos dados e os métodos
que os manipulam.” (MARTIN e ODELL, 1995)
Exemplos:
• Classe Aluno
• Classe Filme
Quais são os atributos, ou propriedades, da Classe Aluno? E da Classe Filme? Quais são seus
métodos, ou funções, que manipulam esses atributos?
6
Pontifícia Universidade Católica de Minas Gerais
Curso de Sistemas de Informação
Algoritmos e Estruturas de Dados
Tipos Abstratos de Dados e Introdução à Programação Orientada a Objetos
Introdução à Programação Orientada a Objetos
Classes e Objetos – Visibilidade/Acessibilidade
+ Pública (public)
- Privada (private)
# Protegida (protected)
i Interna (internal)
r Interna Protegida (protected internal)
Pontifícia Universidade Católica de Minas Gerais
Curso de Sistemas de Informação
Algoritmos e Estruturas de Dados
Tipos Abstratos de Dados e Introdução à Programação Orientada a Objetos
Introdução à Programação Orientada a Objetos
Classes Static
Classes Static não podem ser instanciadas, ou seja, não podem ter nenhum objeto associado a ela.
Todoprograma criado em Console possui obrigatoriamente uma classe program. Embora ela não seja
uma classe static, ela possui um método chamado main que é, não sendo possível ser chamado
através de uma instância de program.
class Program
{
static void Main(string[] args)
{
double a, b, c;
double Delta ...
...
7
Pontifícia Universidade Católica de Minas Gerais
Curso de Sistemas de Informação
Algoritmos e Estruturas de Dados
Tipos Abstratos de Dados e Introdução à Programação Orientada a Objetos
Introdução à Programação Orientada a Objetos
Pilares da POO:
• Abstração
• Encapsulamento
• Herança
• Polimorfismo
Pontifícia Universidade Católica de Minas Gerais
Curso de Sistemas de Informação
Algoritmos e Estruturas de Dados
Tipos Abstratos de Dados e Introdução à Programação Orientada a Objetos
Introdução à Programação Orientada a Objetos
Pilares da POO:
• Abstração
• Encapsulamento
• Herança
• Polimorfismo
Abstração é o “Princípio de ignorar os aspectos de um assunto não relevantes para o propósito em
questão, tornando possível uma concentração maior nos assuntos principais.”
(COAD e YOURDON, 1996)
O quê? x Como?
Não é necessário conhecer como uma determinada funcionalidade foi implementada. Ao invés
disso, a ênfase se dá em o que ela faz. Isso permite um maior foco naquilo que realmente é
importante dentro de um problema computacional.
8
Pontifícia Universidade Católica de Minas Gerais
Curso de Sistemas de Informação
Algoritmos e Estruturas de Dados
Tipos Abstratos de Dados e Introdução à Programação Orientada a Objetos
Introdução à Programação Orientada a Objetos
Pilares da POO:
• Abstração
• Encapsulamento
• Herança
• Polimorfismo
Encapsulamento é um “Princípio, usado no desenvolvimento de uma estrutura global de
programa, de que cada componente do programa deve conter um única decisão de projeto... A
interface para cada módulo é definida de forma a revelar o menos possível sobre seu
funcionamento interno.”
(COAD e YOURDON, 1996)
Não é importante saber detalhes da lógica interna ou de algoritmos utilizados para o tratamento
dos dados em uma rotina computacional. Isso só interessa ao programador que construiu a
solução computacional.
Pontifícia Universidade Católica de Minas Gerais
Curso de Sistemas de Informação
Algoritmos e Estruturas de Dados
Tipos Abstratos de Dados e Introdução à Programação Orientada a Objetos
Introdução à Programação Orientada a Objetos
Pilares da POO:
• Abstração
• Encapsulamento
• Herança
• Polimorfismo
Herança é um “Mecanismo para expressar a similaridade entre Classes, simplificando a definição
de Classes iguais a outras que já foram definidas. Ela representa generalização e especialização,
tornando explícitos os Atributos e Serviços comuns em uma hierarquia de Classe.” (COAD e
YOURDON, 1996)
A Herança é a grande responsável pelo reuso no paradigma da Orientação para Objetos. A
motivação reside no fato de que o que já foi desenvolvido anteriormente pode ser melhorado ou
mesmo executar outras coisas além daquelas que já faz.
9
Pontifícia Universidade Católica de Minas Gerais
Curso de Sistemas de Informação
Algoritmos e Estruturas de Dados
Tipos Abstratos de Dados e Introdução à Programação Orientada a Objetos
Introdução à Programação Orientada a Objetos
Exemplo:
class CalcDelta
{
public double CalculaDelta(double a, double b, double c)
{
double Delta;
Delta = Math.Pow(b, 2) - 4 * a * c;
return (double) Delta;
}
}
Pontifícia Universidade Católica de Minas Gerais
Curso de Sistemas de Informação
Algoritmos e Estruturas de Dados
Tipos Abstratos de Dados e Introdução à Programação Orientada a Objetos
Introdução à Programação Orientada a Objetos
Exemplo:
class CalcRaizes:CalcDelta // Herança
{
public void CalculaRaizes(double a, double b, double c, double Delta,
ref double P1, ref double P2)
{
if (Delta >= 0)
{
P1 = (-b + Math.Sqrt(Delta)) / (2 * a);
P2 = (-b - Math.Sqrt(Delta)) / (2 * a);
}
else
{
...
}
}
}
10
Pontifícia Universidade Católica de Minas Gerais
Curso de Sistemas de Informação
Algoritmos e Estruturas de Dados
Tipos Abstratos de Dados e Introdução à Programação Orientada a Objetos
Introdução à Programação Orientada a Objetos
Exemplo:
class Program
{
static void Main(string[] args)
{
double a, b, c;
double Delta, R1=0, R2=0, Real=0, Imag=0;
CalcRaizes Raizes=new CalcRaizes();
Delta = Raizes.CalculaDelta(a, b, c);
if (Delta == 0)
{
Raizes.CalculaRaizes(a, b, c, Delta, ref R1, ref R2);
...
Pontifícia Universidade Católica de Minas Gerais
Curso de Sistemas de Informação
Algoritmos e Estruturas de Dados
Tipos Abstratos de Dados e Introdução à Programação Orientada a Objetos
Introdução à Programação Orientada a Objetos
Pilares da POO:
• Abstração
• Encapsulamento
• Herança
• Polimorfismo
Polimorfismo é um conceito que permite que diferentes classes possam definir métodos de mesmo
nome. Isso é importante porque permite a escrita de rotinas que operem com qualquer classe que
implementem os métodos necessários.
As classes, portanto, tornam-se mais independentes uma da outra. A criação ou modificação de uma
definição de classe não gera impacto sobre outras classes já definidas anteriormente.

Mais conteúdos dessa disciplina