540 likes | 698 Views
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
E N D
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
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;
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.
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, GarbageCollection • 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
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
p Triângulo calcularArea Dados Retângulo calcularArea Dados Polimorfismo / Vinculação Tardia 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
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
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
Veículo Carro Barco Veículo Anfíbio Herança Múltipla Atributo: • cor Método: - operar Atributo: • cor Método: - operar Atributo: • cor Método: -operar Veículo Terrestre Veículo Aquático Atributo: • cor Método: • operar Atributo: • cor Método: - operar Atributo: • cor Método: • operar ???? 2o semestre 2008 50