Skip to content

Is designed to help you understand Subtype polymorphism, abstract classes and interfaces in CPP.

License

Notifications You must be signed in to change notification settings

faleite/42cpp04

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

:: ██████╗██████╗ ██████╗::::::██████╗:██╗::██╗::
::██╔════╝██╔══██╗██╔══██╗::::██╔═████╗██║::██║::
::██║:::::██████╔╝██████╔╝::::██║██╔██║███████║::
::██║:::::██╔═══╝ ██╔═══╝ ::::████╔╝██║╚════██║::
::╚██████╗██║:::::██║:::::::::╚██████╔╝:::::██║::
:: ╚═════╝╚═╝:::::╚═╝::::::::: ╚═════╝::::::╚═╝::

This module is designed to help you understand Subtype polymorphism,
abstract classes and interfaces in CPP.

Skills Grade
[Imperative programming] [Object-oriented programming] [Rigor] Subscribed :atom:

Introduction

  • C++ é uma linguagem de programação de uso geral criada por Bjarne Stroustrup como uma extensão da linguagem de programação C, ou "C com Classes" wikipedia.
  • O objetivo desses módulos é apresentar a Programação Orientada a Objetos. Este será o ponto de partida de sua jornada em C++. Muitas linguagens são recomendadas para aprender OOP. Decidimos escolher C++ porque ele é derivado do seu velho amigo C. Por ser uma linguagem complexa e para manter as coisas simples, seu código estará em conformidade com o padrão C++ 98. Estamos cientes de que o C++ moderno é muito diferente em muitos aspectos. Portanto, se você deseja se tornar um desenvolvedor C++ proficiente, cabe a você ir além após o 42 Common Core!

General rules

  • Compile seu código com: c++ -Wall -Wextra -Werror -std=c++98
  • Formato UpperCamelCase: Arquivos contendo código de classe serão sempre nomeado de acordo com o nome da classe. Por exemplo: ClassName.hpp/ClassName.h, ClassName.cpp ou ClassName.tpp. Então, se você tem um arquivo de cabeçalho contendo a definição de uma classe "BrickWall" que representa um parede de tijolos, seu nome será BrickWall.hpp.
  • A menos que especificado de outra forma, todas as mensagens de saída devem ser finalizadas com uma nova linha caractere e exibido na saída padrão.
  • Adeus Norminette! Nenhum estilo de codificação é imposto nos módulos C++.
  • Você tem permissão para usar quase tudo da biblioteca padrão.
  • Você não pode usar nenhuma outra biblioteca externa. C++ 11 (e derivadas) e bibliotecas Boost são proibidas. As seguintes funções também são proibidas: * printf(), * alloc() e free().
  • A menos que seja explicitamente declarado o contrário, o uso de namespace <ns_name> e friend keywords amigo são proibidos.
  • É permitido utilizar o STL somente nos Módulos 08 e 09. Isso significa: nenhum Contêiner (vector/list/map/ e assim por diante) e nenhum algoritmo (qualquer coisa que exija a inclusão do cabeçalho <algorithm>) até então.

Alguns requisitos de design

  • O vazamento de memória também ocorre em C++. Ao alocar memória (usando a palavra-chave new), você deve evitar memory leaks.
  • Do Módulo 02 ao Módulo 09, suas classes deverão ser elaboradas na Forma Canônica Ortodoxa, exceto quando explicitamente indicado o contrário.
  • Qualquer implementação de função colocada em um arquivo de cabeçalho (exceto função template) significa 0 para o exercício.
  • Você deve ser capaz de usar cada um dos seus cabeçalhos independentemente dos outros. Assim, eles devem incluir todas as dependências de que necessitam. No entanto, você deve evitar o problema de dupla inclusão adicionando include guards Caso contrário, sua nota será 0.

Read me

  • Você pode adicionar alguns arquivos adicionais se precisar (ou seja, para dividir seu código). Como essas atribuições não são verificadas por um programa, fique à vontade para fazê-lo, desde que entregue os arquivos obrigatórios.
  • Às vezes, as diretrizes de um exercício parecem curtas, mas os exemplos podem mostrar requisitos que não estão explicitamente escritos nas instruções.
  • Leia cada módulo completamente antes de começar! Realmente, faça isso.

Você terá que implementar muitas classes. Isso pode parecer tedioso, a menos que você consiga criar o script do seu editor de texto favorito.

Você tem uma certa liberdade para completar os exercícios. Porém, siga as regras obrigatórias e não seja preguiçoso. Você perderia muitas informações úteis! Não hesite em ler sobre conceitos teóricos.

Novas regras

  • De agora em diante, todas as suas classes devem ser projetadas na Forma Orthodox Canonical Form (Forma Canônica Ortodoxa), a menos que explicitamente declarado o contrário. Então, elas implementarão as quatro funções de membro necessárias abaixo:
    • Construtor padrão
    • Construtor de cópia
    • Operador de atribuição de cópia
    • Destrutor

Divida o código da sua classe em dois arquivos. O arquivo de cabeçalho (.hpp/.h) contém a definição da classe, enquanto o arquivo de origem (.cpp) contém a implementação.

Study resources

Resource Source
CPP Reference Website
C++ Roadmap roadmap.sh
Wiki 42cpp GitHub
Os 4 Pilares da Orientação a Objetos YouTube

About

Is designed to help you understand Subtype polymorphism, abstract classes and interfaces in CPP.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published