Introdução à Ciência da Computação-2

Slides:



Advertisements
Apresentações semelhantes
Orientação a objetos identidade abstração classificação encapsulamento
Advertisements

Análise e Projeto Orientado a Objetos
Desenvolvimento de aplicativos Orientados a Objetos: Definição e Características THIAGO IDEALI.
ESTRUTURA DE DADOS Professor: Marcelo Mendes Turma: MBI-1
ABSTRAÇÃO processo de representar um grupo de entidades através de seus atributos comuns feita a abstração, cada entidade particular (instância) do grupo.
Paulo Marques Hernâni Pedroso
Introdução à Programação Orientada à Objetos Prof. Daniel Merli Lamosa Maio de 2002.
PHPOO Erick Souza. Conceitos de Orientação a Objetos Objeto é um conceito ou item(concreto ou abstrato). Software orientado a objetos Uma classe é uma.
Sílabo: Introdução à Ciência da Computação (SCC0121)
Análise Orientada a Objetos
Modelagem Orientada a Objetos
Orientação a Objetos Introdução. Objetos: o que são? Olhando o mundo real pode-se ver vários objetos: mesa, cadeiras, alunos, professores etc. Esses objetos.
Introdução ao paradigma de programação: Orientado a Objetos
Diagrama de Classes.
Linguagem de Programação II
Aspectos Avançados em Engenharia de Software Aula 3 Fernanda Campos
UMA ABORDAGEM SOBRE ORIENTAÇÃO A OBJETOS!
Herança e Polimorfismo
Classes e objetos P. O. O. Prof. Grace.
TÉCNICAS DE PROGRAMAÇÃO II
Copyright Marcos L. Chaim 2005 Princípios de Projeto de Software Orientado a Objetos Segundo Semestre 2005 Marcos L. Chaim ACH Turma 02 EACH – USP.
Curso de extensão em Desenvolvimento Web
Princípios de Orientação à Objetos
Programação Orientada a Objetos com Java
Introdução à Ciência da Computação-2 Fabio Nakano – Por favor colocar no assunto: ICC2 - – Bloco A-1, segundo andar,
Aula prática 13 Orientação a Objetos – C++ Parte 1
Conceitos básicos de orientação a objetos
Sobrecarga e Encapsulamento
Treinamento do Microsoft® Access® 2010
. Smalltalk HISTÓRICO . Década de 60 – POO . Dynabook (Alan Kay)
Programação Orientada à Objetos
Tópicos avançados em internet A
Análise e Projeto de Sistemas UNIVERSIDADE DE CRUZ ALTA Ciência da Computação 2010/1.
Aula 3 CoL, atividade Polimorfismo (late binding) Modificador final Modificador abstract Interfaces Herança múltipla Atribuição, Construtores, Destrutores,
Programação I Aula 2 (Métodos)
Métodos de Construção de Software: Orientação a Objetos
Linguagem de Programação JAVA
Paradigmas da Programação – Semestre 1 – Aula 2 Professores: Eduardo Mantovani Fábio de Paula.
Tipos Abstratos de Dados
Classes, Objetos, Atributos e Métodos JAVA
Orientação a Objetos Parte I
Programação Orientada à Objetos
PROGRAMAÇÃO ORIENTADA A OBJETO - JAVA
Definição Classe Objeto Construtor de Classes Manipulando o objeto Namespace Utilização do namespace Herança Polimorfismo Encapsulamento Propriedades.
Prof. Silvestri – todos os direitos reservados SISTEMAS DISTRIBUIDOS Aula 5 Eduardo Silvestri
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS EM JAVA
Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Classes e Objetos em Java.
SISTEMAS DISTRIBUIDOS Aula 4
Programação Orientada à Objetos
Aula prática 14 Orientação a Objetos – C++ Parte 2
Estruturas de Dados Aula 8: Tipos Abstratos de Dados 30/04/2014.
Implementação Orientada a Objetos – Aula 03
Programação Orientada à Objetos
Orientação a Objetos usando Java
Aula Prática 4 Monitoria IP/CC (~if669).
Paradigmas da Programação – Semestre 2 – Aula 1 Professores: Fábio de Paula Santos Eduardo Mantovani
Bruno Inojosa MCP .NET Framework
Introdução a Orientação a Objetos
INE5408 Estruturas de Dados Apresentação e Programa da Disciplina.
20/04/2017 Orientação a Objetos 1 1.
Projeto de Banco de Dados
Módulo II Capítulo 1: Orientação a Objetos
Introdução à Ciência da Computação-2 Fabio Nakano – Por favor colocar no assunto: “ICC2 - ” – Bloco A-1, segundo.
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA TOCANTINS Campus Araguaína Continuação Modelagem Orientada a Objetos Técnico Subsequente.
Características Cor Combustível Num_Portas Potencia Comportamentos Acelerar Feiar Acender farol Dar seta Buzinar Características Cor Combustível Num_Portas.
Paradigmas da Programação – Semestre 1 – Aula 7 Professor: Eduardo Mantovani )
Análise Orientada a Objetos Por Patrícia Braga Centro Universitário Jorge Amado.
Herança em Java Curso: Informática Disciplina: Programação Orientada a Objetos Prof. Abrahão Lopes
Laboratório de Computação Aula 06 e 07 – Implementação de classes Prof. Fábio Dias
Linguagem de Programação – Aula 04 Prof. Me. Ronnison Reges Vidal.
Transcrição da apresentação:

Introdução à Ciência da Computação-2 Fabio Nakano (fabionakano@usp.br) Por favor colocar no assunto: “ICC2 - <assunto>” Bloco A-1, segundo andar, sala 77. USEM COM SABEDORIA!!!

O profissional de SI da EACH Ser capaz de entender os processos dentro da empresa em que se inserir Ser capaz de aplicar seus conhecimentos para a melhoria desses processos Resolver problemas!!! Saber programar é essencial, e tem mais!!!

Dá para resolver tudo com programas? Conseguimos descrever qualquer processo usando uma linguagem como as de programação? Dado que conseguimos descrever o processo como um programa, esse programa retorna uma solução? Dado que retorna uma solução, o tempo gasto é aceitável?

ICC, AED Conseguimos descrever qualquer processo usando uma linguagem como as de programação? Dado que conseguimos descrever o processo como um programa, esse programa retorna uma solução? Dado que retorna uma solução, o tempo gasto é aceitável?

Fiquei P....!!! Fui ajudar a minha mulher a pegar as compras na AVON. Como eu queria ter uma lista ordenada por nome do produto!! Lição: Saber Computação/Algoritmos não serve só para usar computadores, serve para poupar trabalho e paciência!!!

Saber Programar é essencial Um programa é um conjunto de rotinas. Um processo dentro da empresa é um conjunto de rotinas. Entender/criar um programa é como entender/criar um processo dentro da empresa!

Um bom programa é... Correto, Claro (organizado, limpo,...), Amigável para o usuário Amigável para os colegas que têm que lê-lo Estruturado, Comentado, Documentado. Reutilizável

O que você já sabe? Programação básica em JAVA Chamadas de função, Passagem por referência e por parâmetro Estratégia de solução de problemas Recursão Estruturas básicas vetores Matrizes Tipos Abstratos de Dados

O que vc vai aprender neste curso Programação JAVA Abstração, Objeto, Herança Polimorfismo Sobrecarga de operadores Algoritmos Busca Ordenação Noções de análise de algoritmos Estruturas de dados Hashing

O primeiro ponto serve para facilitar as tarefas do ciclo de vida do software: Análise do problema Projeto do software Implementação do software Teste do software Manutenção do software A DOCUMENTAÇÃO É FEITA EM TODAS AS ETAPAS!

Os outros pontos têm a ver com Conseguimos descrever qualquer processo usando uma linguagem como as de programação? Dado que conseguimos descrever o processo como um programa, esse programa retorna uma solução? Dado que retorna uma solução, o tempo gasto é aceitável?

As próximas matérias Matemática Discreta Teoria da Computação Algoritmos e Estruturas

Protocolo São 4 professores dando a matéria em turmas diferentes. Vamos coordenar tópicos e EP’s. Teremos listas de exercícios. Frequência mínima: 70%. Avaliação: Duas provas (P1 e P2) Três trabalhos (T1, T2 e T3): exercícios-programas (EPs) Prova substitutiva: somente para quem perdeu uma das provas (FECHADA) substitui a que você perdeu envolve todo o conteúdo ministrado na disciplina. DIFÍCIL: USEM SÓ EM CASO DE EMERGÊNCIA! Qualquer tentativa de fraude implicará em zero na atividade. Número de aulas: 31

Critérios para aprovação Média de Provas (MP): MP = (2*P1 + 3*P2) / 5 Média de Trabalhos (MT): MT = (T1 + T2 + T3) / 3 Média Final (MF) : se MP >= 5,0 e MT >= 5,0 então MF = (7*MP + 3*MT) / 10 senão MF = mínimo(MP, MT)‏ Se MF >= 5,0 → aluno aprovado Se 3,0 <= MF < 5,0 → recuperação Se MF < 3,0 → aluno reprovado.

Recuperação MFR (Média Final após recuperação): Se REC >= 5 MFR = máximo(5, (MF + REC)/2) senão MFR = (MF + REC)/2 REC : envolve todo o conteúdo ministrado na disciplina. É obrigatória (não fez → REC = 0) Se MFR >= 5,0 → aluno aprovado Se MFR < 5,0 → aluno reprovado

Avisos A programação é preliminar e pode estar sujeita a mudanças. A disciplina tem 6 créditos, sendo 4 teóricos e 2 de trabalho: Por isso: Trabalhos (EPs são obrigatórios!!!) Sistema CoL: responsabilidade é do aluno! única responsabilidade do professor: incluir as turmas e os alunos! (ops! ) Horário de atendimento: quintas, combinar horário.

Bibliografia KON, F.; GOLDMAN, A.; SILVA, P.J.S. “Introdução à Ciência de Computação com Java e Orientado a Objetos”, IME - USP, 2005. Disponível em: http://ccsl.ime.usp.br/introCCJavaOO GOODRICH, M.; TAMASSIA, R. Estruturas de Dados e Algoritmos em Java. Ed. Bookman, 2a. Ed. 2002. CORMEN, T. H.; LEISERSON, C. E.; RIVEST, R. L.; STEIN, C. Algoritmos - Trad. 2.º Ed. Americana. Ed. Campus, 2002. ZIVIANI, N. – Projeto de Algoritmos, 2ª Ed., Editora Thomson, 2004. TENEMBAUM, A.M., et all. Data Structures Using C, Prentice-Hall, 1990. WIRTH,N. Algorithms + Data Structures = Programs, Prentice-Hall, 1986

Mãos à obra! Abstração

Abstrato adj. Que designa uma qualidade, ação, ou estado, considerados em si mesmos, independentemente dos seres com que se relacionam: bondade, polidez, adoração, vingança, morte, sonho. / Que opera unicamente com noções: ciências abstratas, número abstrato. / Abstraído, distraído. // Arte abstrata, arte que não se prende à representação da realidade tangível.

Abstração s.f. Operação do espírito, que isola de uma noção um elemento, negligenciando os outros. / Resultado desta operação: a brancura considerada em geral, sem ser aplicada a um objeto, é uma abstração. // Fazer abstração de uma coisa, não levá-la em consideração. S.f.pl. Idéias quiméricas, desvinculadas da realidade: perder-se em abstrações.

Em computação, abstração é: Mecanismo utilizado na análise de um domínio O indivíduo observa a realidade e dela abstrai: entidades ações comportamentos relacionamentos São considerados somente os elementos essenciais para uma aplicação Todos os aspectos julgados irrelevantes são excluídos

Utilidade de abstrair Abstrair elementos irrelevantes; Abstrair detalhes de como se faz (adiando o detalhamento que será necessário, mas que no momento não queremos nos preocupar com isso), focando em o que é e o que faz;

O que é relevante depende do objetivo e do ponto de vista

Apresentando o paradigma de Orientação a Objetos Objeto: abstração de uma entidade real, cujas características e comportamento são conhecidos se apresenta a outras entidades por meio de uma interface bem definida Visão Interna: define a estrutura e o comportamento do objeto, ou seja, define dados e métodos (e suas implementações) Visão Externa: interface que define como o objeto é visto por outros objetos Mensagem: comunicação entre objetos Paradigma=s.m. Modelo, padrão, norma; exemplo.

Objeto, características, comportamento, interface, visão interna, visão externa, mensagem

Objetos e Tipos Abstratos de Dados Tipo Abstrato de Dados - TAD Def.: é uma coleção bem definida de dados a serem armazenados, e um grupo de operadores que podem ser aplicados para manipulação desses dados. Características Fundamentais: > Os operadores do TAD implementam regras bem definidas para manipulação dos valores armazenados; > Os valores armazenados devem ser manipulados EXCLUSIVAMENTE pelos operadores do TAD.

Consequencias das características Ocultamento da informação e implementação implementação do tipo pode ser alterada(contanto que mantenha as mesmas operações) sem afetar as unidades de programa que fazem uso dele Aumenta a confiabilidade, pois nenhuma outra unidade de programa pode mudar, acidentalmente ou intencionalmente, as representações do tipo, aumentando a integridade de tais objetos

Objetos Extensão do conceito de TAD Classe: definição do Tipo Abstrato de Dados Atributos Métodos Objeto: cada instância derivada da classe Representa em software entidades que encontramos no mundo real

OOP e TAD Em uma linguagem funcional fica a cargo do programador respeitar as características do modelo TAD. Em uma linguagem orientada a objetos, a linguagem é construída de forma a ajudar o programador a respeitar as características do modelo.

Exercícios Modelar um objeto em termos de atributos e métodos. Tarefinha: no caminho para casa, ou no caminho para cá, escolher um objeto e modelá-lo em termos de atributos e métodos.

Fim da aula 1

Objetos Extensão do conceito de TAD Classe: definição do Tipo Abstrato de Dados Atributos Métodos Objeto: cada instância derivada da classe Representa em software entidades que encontramos no mundo real

Apresentando o paradigma de Orientação a Objetos Objeto: abstração de uma entidade real, cujas características e comportamento são conhecidos se apresenta a outras entidades por meio de uma interface bem definida Visão Interna: define a estrutura e o comportamento do objeto, ou seja, define dados e métodos (e suas implementações) Visão Externa: interface que define como o objeto é visto por outros objetos Mensagem: comunicação entre objetos Paradigma=s.m. Modelo, padrão, norma; exemplo.

Características Encapsulamento Ocultamento Retenção do estado Identidade do objeto Mensagens Instanciação/Classificação – slides+principal6 Herança Classes abstratas/Interface Modificadores de visibilidade (private, protected, public) Overload Override Polimorfismo Relacionamentos

Características Encapsulamento – principal0 Ocultamento – principal0,1,2,3 Retenção do estado – principal4 Identidade do objeto – principal5 Mensagens – qualquer um

Características Instanciação/Classificação – slides+principal6 Herança – slides+principal6+http://docescoelhos.bravehost.com/raca1.htm Modificadores de visibilidade (private, protected, public) – principal7,8 Overload principal9, principal Override principal 10*

Características Polimorfismo (Late Binding) - slides Relacionamentos entre classes/objetos - slides Interfaces

Tarefa recomendada Devo por a minha conta CoL funcionando até segunda-feira. Ele conterá todo o material do curso (inclusive código-fonte). Reveja os conceitos criando uma classe e refazendo os passos que ilustram cada característica. Uma classe definindo polígonos é interessante sob o aspecto de acomodar todos os conceitos de forma intuitiva.

Aula 3 CoL, atividade Polimorfismo (late binding) Modificador final Modificador abstract Interfaces Herança múltipla Atribuição, Construtores, Destrutores, alocação de memória, Garbage Collection Modificador static, variáveis static, classes static. Interface cloneable Sobrecarga de operadores.

CoL Todos receberam o aviso do CoL? Vamos testar o CoL: Atividade para quinta que vem (19.08): Faça um resumo (max 2 folhas) contendo os conceitos apresentados até esta aula, inclusive, e uma breve explicação.

Polimorfismo “O que possui várias formas” Propriedade de se usar o mesmo nome para métodos diferentes, implementados em diferentes níveis de uma hierarquia de classes Para cada classe, tem-se um comportamento específico para o método 2o semestre 2008 41 41

Polimorfismo / Vinculação Tardia Habilidade pela qual uma única operação pode ser definido em mais de uma classe e assumir implementações diferentes em cada uma dessas classes Overriding de operações Vinculação tardia (late binding) é a técnica pela qual a operação a ser executada é determinada somente em tempo de execução Java (implementado diretamente)‏ Palavra chave virtual (Linguagem C++)‏ 2o semestre 2008 42 42

Polimorfismo / Vinculação Tardia Dados Triângulo calcularArea Retângulo p Polígono p; ... if usuário diz OK then p = new Triângulo(); else p = new Retângulo(); p.calcularArea(); // aqui p pode referir-se a um objeto // Triângulo ou a um objeto Retângulo // Capacidade de Substituição 2o semestre 2008 43 43

Polimorfismo Permite a cada objeto responder a um formato de mensagem da maneira apropriada à classe (ou subclasse) da qual foi instanciado Uma mesma operação pode apresentar comportamentos diferentes em classes (ou subclasses) distintas Uma operação pode ter diferentes implementações, isto é, mais de um método pode implementá-la 2o semestre 2008 44 44

Modificador final Uma variável ou um método “final” não pode ser substituído. Uma classe “final” tem todas as variáveis e métodos “final” e não aceita ser superclasse.

Modificador static Uma variável “static” é compartilhada e acessada por todas as instâncias (principal) Um método “static” pode ser chamado a partir da classe (principal12).

Modificador abstract Um método “abstract” requer ser codificado na subclasse (principal13, principal14). Uma classe com pelo menos um método “abstract” é uma classe abstrata

Interfaces Uma interface é uma classe em que todos os métodos são abstratos (principal 15).

Herança Múltipla Uma classe pode herdar características de mais de uma classe, ou seja, pode ter mais de uma superclasse a subclasse herda todos os atributos e métodos de todas as suas superclasses atributos/métodos de um mesmo ancestral que “alcancem” a subclasse por mais de um caminho na hierarquia são herdados apenas uma vez (são o mesmo atributo/método). Ex. a seguir: atributo cor na hierarquia de Veículo conflitos em definições paralelas na hierarquia podem gerar ambiguidades (ex. a seguir: método operar na hierarquia de Veículo)‏ 2o semestre 2008 49 49

Herança Múltipla Veículo Carro Barco Veículo Anfíbio Veículo Terrestre Atributo: cor Método: - operar Veículo Atributo: cor Método: - operar Atributo: cor Método: -operar Veículo Terrestre Veículo Aquático Carro Barco Veículo Anfíbio Atributo: cor Método: operar Atributo: cor Método: - operar Atributo: cor Método: operar ???? 2o semestre 2008 50 50

Atribuições

Construtores/Alocação/Referência Alocar memória Inicializar variáveis Cópia de instâncias Cópia “rasa” Cópia “profunda” Construtor de cópia/Sobrecarga de operador (C++) Construtor de cópia (JAVA) – principal16

Destrutores e gerenciamento de memória Java não tem um destrutor específico O gerenciador de memória detecta instâncias inativas e devolve a memória utilizada pela instância para o pool de memória livre. Um objeto tem o método finalize() Não é possível dizer quando o método é chamado. Pode-se sugerir uma chamada do gerenciador de memória usando a chamada System.gc()

Modificador static