We may earn an affiliate commission when you visit our partners.
Course image
Jamila Sam and Jean-Cédric Chappelier

Ce cours introduit la programmation orientée objet (encapsulation, abstration, héritage, polymorphisme) en l'illustrant en langage C++. Il présuppose connues les bases de la programmation (variables, types, boucles, fonctions, ...). Il est conçu comme la suite du cours « Initiation à la programmation (en C++) ».

Comme son prédécesseur, ce cours s'appuie sur de nombreux éléments pédagogiques : vidéos sous-titrées, quizz dans et hors vidéos, exercices, devoirs notés automatiquement, notes de cours.

Enroll now

What's inside

Syllabus

Introduction à la Programmation Orientée Objet
Cette semaine vous accueille dans le cours et vous présente les premiers concepts de base de la programmation dite « orientée objet ».
Read more

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Covers essential principles of object-oriented programming, such as abstraction, inheritance, encapsulation, and polymorphism, which are fundamental in software development
Emphasizes hands-on learning through exercises, quizzes, and graded assignments, ensuring comprehension and practical application
Taught by instructors with expertise in the field, providing learners with access to industry knowledge and best practices
Progresses learners from the basics of object-oriented programming in C++ to more advanced concepts like multiple inheritance
Provides foundational knowledge for further exploration in object-oriented programming and related fields, such as data structures and algorithms

Save this course

Create your own learning path. Save this course to your list so you can find it easily later.
Save

Reviews summary

Introduction solide à la poo en c++

Selon les étudiants, ce cours EPFL offre une excellente introduction aux concepts de la programmation orientée objet (POO) en utilisant le langage C++. Les apprenants soulignent la structure claire et logique du cours ainsi que les explications précises des principes fondamentaux comme l'encapsulation, l'héritage et le polymorphisme. Les exercices et les devoirs sont vus comme des éléments utiles pour la pratique et la compréhension, bien que certains les trouvent challenging et rencontrent des difficultés avec l'évaluation automatique. Il est souvent mentionné qu'une bonne base en C++ est essentielle. Dans l'ensemble, le retour est largement positif, les étudiants affirmant que le cours remplit son objectif d'initier efficacement à la POO en C++.
Une base solide en C++ est requise.
"Il est crucial d'avoir de très bonnes bases en C++ avant de commencer ce cours, sinon c'est très difficile."
"Le cours est une suite logique à 'Initiation à la programmation (en C++)' et le niveau de C++ attendu est significatif."
"J'ai dû réviser mes bases C++ pendant le cours car j'avais sous-estimé le niveau requis."
Progression semaine après semaine logique.
"La structure du cours, semaine par semaine, est très bien pensée et suit une courbe d'apprentissage logique."
"J'ai aimé la manière dont le syllabus nous guide à travers les différents piliers de la POO."
"Les vidéos, quizzes et notes de cours s'intègrent bien dans chaque module hebdomadaire."
Les devoirs renforcent l'apprentissage.
"Les devoirs m'ont vraiment aidé à appliquer ce que j'avais appris et à solidifier mes connaissances."
"J'ai trouvé les exercices très pertinents pour comprendre comment la POO fonctionne en pratique."
"Les projets finaux permettent de synthétiser tous les concepts abordés dans les semaines précédentes."
Les bases de la POO sont bien expliquées.
"Le cours explique très clairement les concepts clés de la POO comme l'héritage et le polymorphisme."
"J'ai enfin compris l'encapsulation et l'abstraction grâce à ce cours, les explications sont limpides."
"La manière dont les principes de la POO sont introduits est très pédagogique."
Certains exercices sont ardus.
"Certains exercices étaient très difficiles et m'ont pris beaucoup de temps pour les résoudre."
"J'ai parfois eu du mal avec la complexité des devoirs, ça demande pas mal d'efforts."
"Le système d'évaluation automatique est strict et frustrant si on ne respecte pas exactement le format attendu."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Introduction à la programmation orientée objet (en C++) with these activities:
Review basic programming concepts
Strengthen your foundation in basic programming concepts to enhance your understanding of object-oriented programming.
Browse courses on Programming Fundamentals
Show steps
  • Revisit materials on variables, data types, and control flow.
  • Practice writing simple programs to reinforce fundamental concepts.
Organize and review course materials
Enhance your understanding and retention of course materials by organizing and reviewing notes, assignments, and quizzes.
Show steps
  • Gather notes, assignments, and quizzes from the course.
  • Organize materials into logical categories.
  • Review materials regularly to reinforce understanding.
Understand constructors and destructors
Practice using constructors and destructors in C++ to solidify understanding of object initialization and destruction.
Show steps
  • Implement constructors and destructors in a simple class.
  • Initialize and destroy objects using constructors and destructors.
  • Experiment with different constructor and destructor syntax.
Six other activities
Expand to see all activities and additional details
Show all nine activities
Learn about operator overloading
Extend knowledge of C++ by learning how to overload operators to enhance custom class functionality.
Show steps
  • Study tutorials on operator overloading in C++.
  • Implement overloaded operators in a custom class.
  • Test and debug operator overloading functionality.
Engage in discussions on polymorphism
Discuss and clarify concepts related to polymorphism with peers to deepen your understanding.
Show steps
  • Join a study group or online forum dedicated to C++.
  • Participate actively in discussions on polymorphism and its applications.
  • Share knowledge and learn from others' perspectives.
Design a class hierarchy using inheritance
Demonstrate understanding of inheritance by designing and implementing a class hierarchy with multiple levels of inheritance.
Show steps
  • Identify real-world entities and their relationships.
  • Map entities to a class hierarchy using inheritance.
  • Implement the class hierarchy and test its functionality.
Master multiple inheritance concepts
Solidify your understanding of multiple inheritance, its advantages and challenges, through hands-on practice.
Show steps
  • Create a scenario where multiple inheritance is appropriate.
  • Implement multiple inheritance in C++ and test its behavior.
  • Analyze the benefits and drawbacks of multiple inheritance in your implementation.
Develop a software project using object-oriented design
Apply your knowledge of object-oriented programming to design and implement a software project, demonstrating your understanding of the principles.
Show steps
  • Identify a real-world problem or need.
  • Design a solution using object-oriented principles.
  • Implement the solution using C++ and object-oriented programming techniques.
  • Test and debug the software project.
Develop a case study analysis
Demonstrate your understanding of object-oriented programming by analyzing and presenting a real-world case study.
Show steps
  • Identify a relevant case study showcasing object-oriented principles.
  • Analyze the case study, identifying the object-oriented concepts employed.
  • Prepare a presentation summarizing your analysis and insights.

Career center

Learners who complete Introduction à la programmation orientée objet (en C++) will develop knowledge and skills that may be useful to these careers:
Software Developer
Software Developers design, develop, test, and debug software applications, using a variety of programming languages. They work on projects in various fields, including finance, healthcare, manufacturing, and technology. This course can be a great place to start for those aspiring to be a Software Developer, as it teaches the fundamentals of object-oriented programming (OOP), a paradigm used in the vast majority of software applications. Students will learn about encapsulation, abstraction, inheritance, and polymorphism, all of which are essential concepts for Software Developers.
Web Developer
Web Developers design and develop websites, using various programming languages like HTML, CSS, and JavaScript. While this course focuses on OOP in C++, many OOP concepts are used in web development. For example, encapsulation helps to keep code organized and maintainable, while inheritance and polymorphism allow for code reuse and extensibility. This course can provide Web Developers with a solid foundation in OOP principles, which can help them become more effective in their roles.
Data Scientist
Data Scientists use scientific methods, processes, algorithms, and systems to extract knowledge and insights from data in various forms, both structured and unstructured. This course can provide Data Scientists with a foundation in OOP, which can be useful for working with complex datasets and developing machine learning models. OOP principles such as encapsulation and inheritance can help Data Scientists organize and manage their code effectively, while polymorphism can help them write code that is more flexible and reusable.
Database Administrator
Database Administrators are responsible for managing and maintaining databases, ensuring that they are available, reliable, and secure. This course can provide Database Administrators with a foundation in OOP, which can be useful for developing and managing database applications. OOP principles such as encapsulation and abstraction can help Database Administrators create secure and maintainable code, while inheritance and polymorphism can help them write code that is more flexible and reusable.
Computer Systems Analyst
Computer Systems Analysts design, implement, and maintain computer systems, ensuring that they meet the needs of businesses and organizations. This course can provide Computer Systems Analysts with a foundation in OOP, which can be useful for developing and managing complex software systems. OOP principles such as encapsulation and abstraction can help Computer Systems Analysts create secure and maintainable code, while inheritance and polymorphism can help them write code that is more flexible and reusable.
Information Security Analyst
Information Security Analysts plan and implement security measures to protect computer systems and networks from unauthorized access, use, disclosure, disruption, modification, or destruction. This course can provide Information Security Analysts with a foundation in OOP, which can be useful for developing and managing security systems. OOP principles such as encapsulation and abstraction can help Information Security Analysts create secure and maintainable code, while inheritance and polymorphism can help them write code that is more flexible and reusable.
Software Quality Assurance Analyst
Software Quality Assurance Analysts test and evaluate software products to ensure that they meet quality standards. This course can provide Software Quality Assurance Analysts with a foundation in OOP, which can be useful for understanding and testing software code. OOP principles such as encapsulation and abstraction can help Software Quality Assurance Analysts identify and isolate defects, while inheritance and polymorphism can help them test code more efficiently.
Network Administrator
Network Administrators are responsible for managing and maintaining computer networks, ensuring that they are reliable and secure. This course can provide Network Administrators with a foundation in OOP, which can be useful for developing and managing network applications. OOP principles such as encapsulation and abstraction can help Network Administrators create secure and maintainable code, while inheritance and polymorphism can help them write code that is more flexible and reusable.
Technical Writer
Technical Writers create and maintain technical documentation, such as user manuals, technical reports, and white papers. This course can provide Technical Writers with a foundation in OOP, which can be useful for understanding and explaining complex technical concepts. OOP principles such as encapsulation and abstraction can help Technical Writers organize and structure their documentation, while inheritance and polymorphism can help them reuse content more effectively.
Product Manager
Product Managers are responsible for managing the development and launch of new products and services. This course can provide Product Managers with a foundation in OOP, which can be useful for understanding the technical aspects of product development. OOP principles such as encapsulation and abstraction can help Product Managers communicate with engineers and other stakeholders, while inheritance and polymorphism can help them create products that are more flexible and extensible.
Business Analyst
Business Analysts work with businesses and organizations to identify and solve problems, using a variety of analytical techniques. This course can provide Business Analysts with a foundation in OOP, which can be useful for understanding and modeling business processes. OOP principles such as encapsulation and abstraction can help Business Analysts organize and structure their work, while inheritance and polymorphism can help them create models that are more flexible and reusable.
Project Manager
Project Managers are responsible for planning, executing, and closing projects, ensuring that they are completed on time, within budget, and to the required quality standards. This course can provide Project Managers with a foundation in OOP, which can be useful for understanding and managing complex projects. OOP principles such as encapsulation and abstraction can help Project Managers organize and structure their work, while inheritance and polymorphism can help them create project plans that are more flexible and reusable.
Systems Administrator
Systems Administrators are responsible for managing and maintaining computer systems, ensuring that they are available, reliable, and secure. This course can provide Systems Administrators with a foundation in OOP, which can be useful for developing and managing system administration scripts and tools. OOP principles such as encapsulation and abstraction can help Systems Administrators create secure and maintainable code, while inheritance and polymorphism can help them write code that is more flexible and reusable.
Computer Programmer
Computer Programmers write, test, and maintain computer code, using a variety of programming languages. This course can provide Computer Programmers with a foundation in OOP, which is essential for writing clean, maintainable, and extensible code. OOP principles such as encapsulation and abstraction can help Computer Programmers organize and structure their code, while inheritance and polymorphism can help them write code that is more flexible and reusable.
Software Engineer
Software Engineers design, develop, and maintain software systems, using a variety of programming languages and technologies. This course can provide Software Engineers with a foundation in OOP, which is essential for writing clean, maintainable, and extensible code. OOP principles such as encapsulation and abstraction can help Software Engineers organize and structure their code, while inheritance and polymorphism can help them write code that is more flexible and reusable.

Reading list

We've selected 32 books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Introduction à la programmation orientée objet (en C++).
Ce livre faisant autorité, écrit par le créateur du C++, fournit une référence complète sur le langage. Il complète le cours en offrant des informations détaillées sur les fonctionnalités du langage, la conception du système et les meilleures pratiques.
Ce livre classique fournit une introduction complète aux motifs de conception, qui sont des solutions réutilisables à des problèmes courants de conception logicielle. Il complète le cours en offrant des exemples concrets et des conseils pour l'application des motifs de conception.
Ce livre accessible et engageant fournit une approche pratique pour apprendre les motifs de conception. Il complète le cours en proposant des explications claires et des exemples concrets qui facilitent la compréhension des concepts.
Ce livre fournit des conseils pratiques pour écrire du code C++ clair, concis et maintenable. Il complète le cours en fournissant des informations sur les meilleures pratiques et les pièges courants de la programmation C++.
Ce livre complet couvre tous les aspects essentiels de la programmation orientée objet en C++. Il complète le cours en fournissant un aperçu large des concepts, des techniques et des meilleures pratiques.
Ce livre explore les concepts fondamentaux du C++ de manière approfondie et accessible. Il est utile pour les débutants qui souhaitent acquérir une compréhension solide du langage avant de se lancer dans la programmation orientée objet.
Ce livre complet fournit une référence approfondie sur les modèles de C++. Il complète le cours en fournissant des informations détaillées sur la conception et l'utilisation de modèles pour écrire du code C++ générique et réutilisable.
Cet ouvrage est une référence pour l'apprentissage du C++. Il couvre tous les aspects du langage, y compris la programmation orientée objet, les modèles de conception et la programmation générique.
Cet ouvrage, destiné aux débutants, présente les concepts fondamentaux de la programmation orientée objet en C++. Il aborde les notions de classe, d'objet, d'héritage, de polymorphisme et de gestion de la mémoire.
Ce livre complet couvre les bases de la programmation en C++ et fournit des informations détaillées sur les fonctionnalités avancées du langage. Il complète le cours en fournissant un contexte plus large et en approfondissant les concepts C++.
Ce livre sert d'introduction complète à la programmation orientée objet en C++. Il complète le cours en fournissant des explications claires, des exemples pratiques et des exercices pour aider les élèves à maîtriser les concepts fondamentaux.
Ce livre fournit une approche complète de l'analyse et de la conception orientées objet. Il couvre les méthodes et techniques utilisées pour modéliser, concevoir et implémenter des systèmes logiciels complexes.
Ce livre fournit un aperçu approfondi des concepts fondamentaux de C++, y compris la programmation orientée objet.
Cet ouvrage fournit des conseils pratiques pour écrire du code C++ efficace et fiable. Il couvre un large éventail de sujets, notamment la gestion des ressources, la programmation défensive et la conception de classes.
Ce livre aborde les concepts et les techniques de programmation concurrente en C++. Il couvre les sujets tels que les threads, la synchronisation et la parallélisation. Il est utile pour les développeurs qui souhaitent maîtriser la programmation concurrente et améliorer les performances de leurs applications.
Cet ouvrage explore les principes et les pratiques agiles dans le contexte de la programmation C++. Il montre comment appliquer ces principes pour améliorer la qualité, la flexibilité et la maintenabilité des applications.
Cet ouvrage, écrit dans un style humoristique et accessible, présente les 23 modèles de conception les plus courants. Il est idéal pour les débutants qui souhaitent apprendre les principes de la conception orientée objet.
Cet ouvrage fournit une introduction complète à l'analyse et à la conception orientées objet. Il couvre tous les aspects du développement logiciel, de la collecte des besoins à la conception et à l'implémentation.
Cet ouvrage fournit des conseils pratiques pour écrire du code propre et maintenable. Il couvre un large éventail de sujets, notamment le nommage des variables, la structure du code et la gestion des erreurs.
Cet ouvrage est une référence pour le développement de logiciels. Il couvre tous les aspects du développement logiciel, de la planification à la conception, l'implémentation et les tests.
Cet ouvrage est une référence pour l'apprentissage des algorithmes. Il couvre tous les aspects des algorithmes, de leur conception à leur analyse.
Cet ouvrage est une référence pour l'apprentissage de l'algèbre linéaire. Il couvre tous les aspects de l'algèbre linéaire, des matrices et des vecteurs aux espaces vectoriels et aux transformations linéaires.
Cet ouvrage est une référence pour l'apprentissage du calcul. Il couvre tous les aspects du calcul, des limites et des dérivées aux intégrales et aux équations différentielles.
Cet ouvrage est une référence pour l'apprentissage de la physique. Il couvre tous les aspects de la physique, de la mécanique à l'électricité et au magnétisme.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser