Certo. Aqui, um pouquinho de história da orientação a objetos, né.
Como eu dizia lá, no início desse discurso, a orientação a objetos ela surge
lá nos países nórdicos, particularmente, na Noruega,
com a linguagem Simula 67 que foi criada pra simular situações do mundo real.
Os autores lá, eram o Kristen Nygaard e Ole-Johan Dahl.
Depois você tem o pessoal que observa, lá nos Estados Unidos,
Essa possibilidade de orientação a objetos
E cria uma linguagem de orientação...
Orientada a objetos mais propriamente dita, que é a Smalltalk.
E quem criou isso foi pessoal lá da Xerox, tá.
Particularmente, o Alan... Alan Kay e sua Equipe.
Lá nos idos de aproximadamente 1971.
Enquanto que o Simula como vocês tão vendo lá, foi no ano de 1962-1967.
Década quente, lá, de 1960.
Bom, entra, então, o Smalltalk em 71, e depois, entra
o Stroustrup em 83 no Bell Labs, Estados Unidos, criando o C++.
Mais ou menos, naquele contexto que eu expliquei pra vocês.
Aqui tem umas referências a mais.
As vezes o pessoal critica a Wikipédia etc, com uma certa razão,
mas, querendo ou não, ali você tem um...
Uma informação rápida a respeito dos assuntos, tá.
E aí, obviamente você vai pegar... Depois...
Referências, mais formais pra se aprofundar
e confirmar as informações que se encontram aqui e acolá.
Na orientação a objetos, por que mesmo que vocês aprendem C++?
Aliás, antes disso. Por quê que vocês lá no procedimental aprenderam linguagem C?
Vamos relembrar um pouquinho, a importância sistêmica do C e do C++.
A linguagem C ela foi criada nos anos 70, pelo Dennis Ritchie e pelo Ken Thompson.
Se eu não me engano, o Ritchie faleceu há alguns poucos anos.
O Thompson eu já não lembro.
Se eu não tô equivocado, tá.
Depois podem verificar isso.
Mas o fato é que esses camaradas foram geniais.
Eles construíram essa linguagem, que é uma veterana,
tem um baita impacto, até hoje, na construção de software.
Até hoje, software embarcado, inclusive software crítico,
como software que roda em avião, eles são feitos em C.
O software de avião você tem uma migração lenta, mas ocorrendo, pro C++, tá.
Mas softwares críticos, particularmente, sistemas embarcados
onde, não raro, você vai ter pouca memória e pouco processamento,
para fins de atendimento de necessidades mercadológicas,
ou seja, o produto não pode ser caro.
Você vai trabalhar com a linguagem C. Por quê?
Porque ela permite gerenciar situações
onde você tem pouca capacidade de processamento e pouca capacidade de memória.
E, ainda assim, não ser tão difícil de programar como a programação em Assembly.
Bom, o fato é que ela é uma linguagem difundida amplamente utilizada, veterana.
Sintaxe difundida, ou seja, servindo como inspirações tecnológicas.
Se você olha linguagens hoje, de internet, como o PHP.
PHP, a sintaxe dela é muito próxima da linguagem C.
Você vai, por exemplo, no MATLAB e afins.
Dentro do MATLAB que é um software de simulação matemática,
construções matemáticas, na prática.
Você tem uma linguagem de programação lá, embutida
Se você olha a sintaxe da linguagem embutida lá,
ela é uma sintaxe inspirada na linguagem C.
Ela é uma linguagem multinível, né, a linguagem C,
permite compor programas com abordagens variando entre o baixo e o alto nível.
Permite uma boa organização através de funções, procedimentos, estrutura de dados.
Os ambientes também evoluíram,
permitindo a divisão de código em fontes, como .h e .c
Bom, isso é da própria linguagem e os ambientes aproveitam isso, né.
Você tem flexibilidades, né...
Uma das, talvez das mais veementes, são os ponteiros.
Alguns dizem "faca de dois gumes", mas se você conhece bem os ponteiros,
ela devia ser uma faca de um gume só
que permite a independência de memória pré-alocada e assim vai, tá.
Então, você tem uma série de vantagens com relação a linguagem C.
O quê que eu escrevi ali embaixo?
Uma linguagem importantíssima para Eng. Eletrônica e Eng. de Computação
que tendem a trabalhar com sistemas de forte intimidade eletrônica computacional,
para fins de otimizações, economias de memória, como sistemas embarcados.
Sim, isso aí ficou bonito o que eu escrevi.
E é, basicamente, o que eu já tinha dito no meu discurso, enfim.
Aqui é um exemplo de um programinha em C, né.
Só pra vocês matarem saudade.
Estrutura Pessoa, um Calc_Idade da pessoa
e lá na função main, você tem ali a criação das variáveis Einstein e Newton
que são da estrutura Pessoa.
Você coloca dados nos campos do Einstein e do Newton.
Depois usa a função Calc_Idade
pra calcular pra calcular a idade do Einstein e Newton
passando eles mesmos como essas variáveis
como parâmetro ali, né, em cada chamada de função.
Aqui um programinha só pra vocês matarem a saudade, como eu dizia.
A linguagem C, ainda, tem algumas características
devido a sua flexibilidade de utilização ela pode ser considerada complicada
assim, ou seja, essa seria uma característica, talvez... Supostamente, não-positiva.
Uma alternativa é o uso de outras linguagens "menos flexíveis",
especializada para a aplicação em questão.
Entretanto, o fato é que compreender C,
com suas flexibilidades, permite compreender outras linguagens.
Isso é uma verdade.
E, até, fazendo uma crítica em relação a esse slide, tá.
Eu não acho a sintaxe da linguagem C tão complicada assim
e nem a sua flexibilidade de utilização.
Se você tem uma bela formação em linguagem C
Essa suposta característica não-positiva ela some.
Aqui talvez tenha uma crítica mais veemente,
que é o fato de ela ser do paradigma imperativo-procedimental.
O paradigma procedimental é menos rico que, por exemplo, o paradigma orientado a objetos.
Uma alternativa a linguagem C, seria uma linguagem OO.
Em particular, a linguagem C++.
Pode-se dizer que a linguagem C++
é uma evolução da linguagem C, à medida que, além de permitir
a linguagem procedimental C, o C++ permite, também, a orientação a objetos.
Trabalhando, inclusive, conjuntamente com o procedimental.
Eu quando faço sistemas em C++, eu faço puramente OO.
Mas é possível, e isso ocorre, você ter módulos procedimentais,
E você ter módulos... Orientado a objetos trabalhando conjuntamente.
Bom, já que, pra esse defeito da linguagem C.
A linguagem C, novamente, é uma linguagem importantíssima, o defeito é não ter OO.
Nós temos o C++, justamente, tem tudo o que o C tem
e 'mais, mais' (++) a orientação a objetos.
A linguagem C++, criada pelo Bjarne Stroustrup lá nos anos 80, comporta a linguagem C.
As vezes um compilador ou outro, tem um detalhezinho aqui ou acolá,
por isso a intersecção imperfeita.
Mas enfim, via de regra, comporta a linguagem C.
A linguagem C++ comporta a maioria dos conceitos de programação orientado a objetos com suas vantagens,
e ela é uma linguagem híbrida, conforme já foi dito, né.
Lá do procedimental até o orientado a objetos.
Tal qual a linguagem C, a linguagem C++ é uma linguagem muito flexível
permitindo trabalhar do baixo ao alto nível
com a vantagem da orientação a objetos, conforme já foi dito.
Aqui alguns conceitos do C++ e da OO que a gente vai trabalhar na disciplina.
Quem quiser já ir estudando os slides pra frente, é bem...
É estimulado a fazê-lo.
Lá, a gente vai aprender os conceitos elementares como o de classe e objetos,
o de herança, o de agregação,
e aqui sublinhado, em algum momento da disciplina, aí, ou do curso,
a gente vai aprender polimorfismo.
Há quem diga, os teóricos dos paradigmas,
que se não fosse o polimorfismo,
a orientação a objetos não seria a orientação a objetos.
O grande o elemento evolutivo que distingue, efetivamente,
a orientação a objetos com relação a procedimental, de acordo com esses autores
ou com essa parte da literatura, seria o polimorfismo.
A orientação a objetos permite, por exemplo,
uma melhor organização e reaproveitamento de código, conforme já foi dito.
Isso é um memento, uma lembrança.
Bom, além da importância do C e do C++
na história da computação, além da importância industrial
que o C e o C++ tiveram, e tem.
Muitos sistemas operacionais foram criados em C, por exemplo.
O que eles têm e continuam tendo,
boa parte dos programas de sistemas embarcados são programados em C.
E migrando, hoje em dia, conforme a situação do sistema embarcado, pra C++.
Mesmo sistemas normais, ainda muitos deles são programados em C++.
O C++ continua, estatisticamente, sendo uma linguagem importante.
Bom, nesse sentido de questões sistêmicas,
ele tem um belo suporte tecnológico, o C e o C++.
Tanto é que você vai ter uma série de compiladores.
Até hoje a Microsoft dá suporte ao C++, tá.
Você vai ter outros compiladores dando suporte ao C++,
como a gente diz, o compilador da Borland, tá.
Uma série de compiladores livres também, como o G++,
C++, o Dev C++, perdão. CodeBlocks.
Muitos de vocês utilizaram o CodeBlocks lá em disciplinas que
trataram a linguagem C, como Técnicas de Programação, ou Técnicas de Programação 1.
Ou Computação 1, conforme o curso.
Bom, além do mais, também o C e o C++, serviram de influências tecnológicas.
Por exemplo, pra linguagem do MATLAB, PHP, pro Java, pro C# e por aí vai, conforme já dito.
Outra questão fundamental, também, é o ciclo de Engenharia, tá, de Software.
Se você olha a implementação de um código em C, ou em C++.
Vamos focar no C++ aqui.
A implementação é apenas uma das fases do processo da engenharia.
Antes da implementação, você vai ter a análise do projeto, que é a modelagem.
Antes do projeto, você vai ter fases como o levantamento de requisitos.
E antes dos requisitos as necessidades.
Quando você vai, por exemplo, tá na fase de análise de projeto,
você já tem linguagens de modelagem.
Vou citar aqui a Linguagem Unificada de Modelagem, Unified Modeling Language,
aonde você faz a maquete do software.
Hoje em dia, as ferramentas que permitem você fazer essa modelagem,
usando Linguagem de Modelagem Unificada,
elas são ferramentas que você chama de ferramentas CASE.
CASE vai ser, Computer-Aided System Engineering, ou Software Engineering,.
Engenharia de Sistema ou de Software Auxiliar para o computador.
O legal, pessoal, é que toda hora que você programa, aliás a hora que você modela o sistema,
cria lá os seus módulos, as relações entre eles,
hoje em dia, através dessas ferramentas CASE, você já consegue gerar código.
Essas ferramentas CASE, via de regra, suportam, justamente, o C++,
gera código deles, a partir do C++.
Só pra vocês entenderem, então, que o,
inclusive, não só do ponto de vista de compiladores,
de ambientes de programação que envolvem os compiladores,
você tem também a análise e o projeto.
Já comportando, vislumbrando, o C++ a geração de código a partir da modelagem, bem entendido.
Aqui tem outras questões sistêmicas tá,
que é, basicamente, o que eu relatei no meu discurso no slide anterior.
Conclusão é que o C++ é importante.
É Importante, um profundo impacto industrial, um profundo impacto sistêmico,
e é por isso que vocês aprendem ele aqui nessa disciplina.
Lembrem-se que cada vez que você tá numa disciplina, que você aprende um o quê
você tem que se perguntar o porquê.
Essa aula aqui foi uma aula sobre porquês, inclusive.
Aqui alguns conteúdos que vocês devem dominar, ou devem ter revisado,
devem revisar da linguagem C, tá.
Vocês têm que dominar esses elementos aqui.
Isso aqui assine com a mão, você tem que saber, enfim.
E aqui são conteúdos que a gente vai aprender nesse nosso estudo, tá.
Ali é o antigo nome da disciplina Técnicas de Programação, era Fundamentos 2, né.
Então, isso explica o porque tá "Fund. 2" ali.
São conceitos que a gente vai estudar nos slides daqui para frente.
Inclusive, é uma boa técnica o camarada estudar os slides pra frente
antes de assistir o vídeo, assistir a aula,
já pra se simpatizar com o conteúdo.
Colocar ali, anotações de dúvidas,
pra ver se o próprio... A aula vai sanar essa dúvida
ou depois pra ele anotar essa dúvida pra
debater com os professores, né,
com os colegas mesmo, enfim, com o pessoal envolvido no curso.
Aqui as bibliografias, né.
Lá pra C, quem quer revisar um pouco de C, você vai ter o Schildt,
vai ter o próprio livro do Kernighan e do Ritchie, tá.
O livro do Schildt é muito bom.
Inclusive o Schildt também tem um livro de C++, agora, se eu não me equivoco.
Outro livro de C++ que eu gosto muito,
é o do... Já evoluindo para o C++ no tocante a bibliografia.
É do Deitel, do pai e filho Deitel.
Acho ele muito legal. O do Lippman também é bom.
O do Stroustrup, ele não é bom para iniciantes.
O Stroustrup é um excelente livro depois que você conhece bem o C++, você quer tirar dúvidas,
você quer aprofundar no conceito, tá.
Mas não mergulhe no Stroustrup num primeiro momento.
Vão lá, primeiro, usar o livro do Deitel, do Lippman pra depois ir pro Stroustrup.
Outro aconselhamento, vocês...
talvez não seja a melhor maneira ler o livro de maneira linear.
Bom, se você tá estudando só pelo livro do Deitel, aí tudo bem você ler ele de maneira linear.
Agora você tá usando o livro do Deitel como suporte para o nosso estudo aqui
e você aprendeu na nossa disciplina
no momento dado aqui, sobre classe e objetos,
você vai estudar... Vai buscar esse assunto e ler essa seção
num o dado capítulo sobre objetos e classes.
Então, você vai adaptando a leitura do livro conforme vai evoluindo nosso estudo,
se você quiser usar o livro de suporte, bem entendido.
Aqui tem meu site da disciplina, isso aqui é fundamental tá.
Nesse site, você vai encontrar todos os materiais que eu tenho da disciplina, tá.
Códigos, slides e afins.
O que você não vai encontrar são os vídeos.
Os vídeos vão ficar no Moodle, pelo menos num primeiro momento
e esses vídeos não são... Não são divulgáveis, alhures e outros lugares.
Por quê? Porquê... Questões de ordem prática e legal.
Esses vídeos, por ora, são pros alunos que tão fazendo esse estudo,
devidamente inscritos na matéria.
sem a possibilidade da pessoa utilizar esse conteúdo, divulgar esse conteúdo
alhures como eu dizia.
Bom, essa é a primeira aula, tá. Foi uma primeira experiência que eu fiz,
essa é a primeira aula que faço assim... Online.
Espero que vocês tenham gostado, antes de findá-la
Só vou... Abrir aqui... O site... Que eu uso na disciplina.
Então, tá ali DAINF Jean Simão, por exemplo, vocês põe no Google, tá.
Não tem nenhum mistério.
É a primeira que vem aqui, ó.
Tá aqui a página.
Tá aberto. Deixa eu melhorar aqui o tamanho.
Aqui tem as coisas que eu trabalho, por exemplo, o Paradigma Orientado a Notificações
que é a minha principal linha de pesquisa.
Aqui tem disciplinas que eu trabalho.
Aqui tem Técnicas de Programação.
Se você entra aqui, em Técnicas de Programação
tem aqui a revisão dos conceitos fundamentais da linguagem C++.
Revisão ou visão, conforme a situação.
Aqui, por exemplo, tem a aula que foi tratada no dia de hoje
que é aqui o Grupo de Slides 1 - Parte A.
Muito obrigado pela atenção.
Bons estudos!
E que bom que vocês
estão aqui conosco estudando e avançando
os conhecimentos que são fundamentais para formação de vocês.
Até breve, gente.