Option SLAM : POO, bases de données SQL et développement web : fiche de révision
Classes et héritage, UML, requêtes SQL avec jointures, normalisation, MVC, API REST et Git : la fiche SLAM pour l'épreuve E5.
1Programmation orientée objet
La POO structure un programme en classes (modèles) et objets (instances). Une classe possède des attributs (état) et des méthodes (comportement), et un constructeur initialise les objets. Quatre piliers : l'encapsulation (attributs privés, accès par accesseurs get/set — protège l'état), l'héritage (une classe fille étend une classe mère et récupère ses membres : class Chien extends Animal), le polymorphisme (une même méthode se comporte différemment selon la classe : redéfinition — override — de parler() dans Chien et Chat) et l'abstraction (classe abstraite non instanciable imposant des méthodes ; interface = contrat de méthodes qu'une classe s'engage à implémenter).
Vocabulaire courant à l'oral : surcharge (overload — même nom, paramètres différents) vs redéfinition (override — même signature dans la fille) ; static (membre de classe partagé) ; this (objet courant) ; super (classe mère). Les langages rencontrés en SIO : PHP (avec Symfony ou Laravel), C# (.NET), Java, Python, JavaScript/TypeScript. La modélisation passe par UML : diagramme de cas d'utilisation (fonctionnalités par acteur), diagramme de classes (classes, attributs, méthodes, associations avec multiplicités 1, 0..1, 1..*, *), diagramme de séquence (échanges dans le temps).
2Bases de données relationnelles et SQL
Une base relationnelle organise les données en tables liées par des clés : clé primaire (identifiant unique, non nul), clé étrangère (référence la clé primaire d'une autre table — garantit l'intégrité référentielle). Le modèle se conçoit en entités-associations puis se normalise : première forme normale (valeurs atomiques), deuxième (tout attribut dépend de toute la clé), troisième (aucune dépendance entre attributs non-clés) — la 3NF élimine les redondances et les anomalies de mise à jour.
SQL à maîtriser : SELECT colonnes FROM table WHERE condition ORDER BY colonne ; jointures INNER JOIN (lignes correspondantes des deux tables) et LEFT JOIN (toutes les lignes de gauche, même sans correspondance) ; agrégats COUNT, SUM, AVG, MIN, MAX avec GROUP BY et filtrage des groupes par HAVING (WHERE filtre les lignes avant regroupement, HAVING les groupes après) ; sous-requêtes ; INSERT INTO, UPDATE … SET … WHERE, DELETE FROM … WHERE (sans WHERE, toute la table est touchée !). Les transactions respectent ACID (Atomicité, Cohérence, Isolation, Durabilité) : BEGIN, COMMIT, ROLLBACK. Un index accélère les lectures au prix des écritures. Côté sécurité, les requêtes préparées (paramètres liés) sont la parade obligatoire contre l'injection SQL.
3Développement web, API et outils
Côté client : HTML (structure sémantique), CSS (mise en forme, responsive avec media queries, frameworks type Bootstrap), JavaScript (interaction, DOM, fetch pour appeler des API, promesses async/await). Côté serveur : un langage (PHP, C#, Python, Node.js) souvent organisé en MVC — Modèle (données et logique métier), Vue (présentation), Contrôleur (reçoit la requête, orchestre) — pour séparer les responsabilités et faciliter la maintenance. Les frameworks (Symfony, ASP.NET, Django) fournissent routage, ORM (objets ↔ tables), sécurité et templates.
Une API REST expose des ressources par URL avec les verbes HTTP : GET (lire), POST (créer), PUT/PATCH (modifier), DELETE (supprimer), et répond en JSON avec des codes de statut (200 OK, 201 créé, 400 requête invalide, 401 non authentifié, 403 interdit, 404 introuvable, 500 erreur serveur). L'authentification passe par sessions, tokens (JWT) ou OAuth. Outils du développeur : Git (git init, add, commit, push, pull, branch, merge ; dépôt distant GitHub/GitLab), tests unitaires (PHPUnit, xUnit, pytest), débogage, et documentation (README, commentaires, diagrammes).
4L'épreuve E5 SLAM et l'entraînement
L'épreuve E5 de l'option SLAM (conception et développement d'applications) est pratique et évaluée en contrôle en cours de formation : à partir d'un besoin, concevoir (UML, modèle de données), développer (fonctionnalité complète avec accès aux données), tester et documenter. Le jury vérifie la qualité du code (nommage, structure, gestion des erreurs), la sécurité (requêtes préparées, validation des entrées, échappement) et la capacité à expliquer ses choix.
Entraînement : refaire chaque semaine un petit projet complet (une entité, son CRUD, une API et une vue), écrire les requêtes SQL à la main avant de passer par l'ORM, dessiner le diagramme de classes avant de coder, et mémoriser par flashcards : pilier POO → définition → exemple de code, verbe HTTP → usage → code de statut, forme normale → règle. Les questions classiques de l'oral : différence entre classe abstraite et interface, INNER et LEFT JOIN, WHERE et HAVING, GET et POST.
Définitions à connaître par cœur
Quiz : teste-toi sur option slam : poo, bases de données sql et développement web
9 questions corrigées. Réponds avant d'ouvrir la correction !
1. Une classe fille qui réécrit une méthode de sa classe mère avec la même signature fait de la…
- A.surcharge
- B.redéfinition (override)
- C.encapsulation
- D.abstraction
Voir la réponse
Réponse : B. redéfinition (override)
Redéfinition = même signature dans la fille ; surcharge = même nom, paramètres différents.
2. Une interface en POO est…
- A.une classe instanciable
- B.un contrat de méthodes qu'une classe s'engage à implémenter
- C.un attribut partagé
- D.une base de données
Voir la réponse
Réponse : B. un contrat de méthodes qu'une classe s'engage à implémenter
L'interface déclare des méthodes sans corps ; la classe qui l'implémente doit les définir.
3. Quelle jointure renvoie toutes les lignes de la table de gauche, même sans correspondance ?
- A.INNER JOIN
- B.LEFT JOIN
- C.CROSS JOIN
- D.SELF JOIN
Voir la réponse
Réponse : B. LEFT JOIN
LEFT JOIN conserve toutes les lignes de gauche (NULL à droite si pas de correspondance) ; INNER JOIN ne garde que les correspondances.
4. Pour filtrer des groupes après un GROUP BY, on utilise…
- A.WHERE
- B.HAVING
- C.ORDER BY
- D.LIMIT
Voir la réponse
Réponse : B. HAVING
WHERE filtre les lignes avant regroupement ; HAVING filtre les groupes (sur des agrégats) après.
5. La parade principale contre l'injection SQL est…
- A.chiffrer la base
- B.utiliser des requêtes préparées avec paramètres liés
- C.renommer les tables
- D.limiter la longueur des mots de passe
Voir la réponse
Réponse : B. utiliser des requêtes préparées avec paramètres liés
Les requêtes préparées séparent le code SQL des données saisies, qui ne peuvent plus être interprétées.
6. Quel verbe HTTP crée une ressource dans une API REST ?
- A.GET
- B.POST
- C.DELETE
- D.HEAD
Voir la réponse
Réponse : B. POST
POST crée (réponse 201) ; GET lit ; PUT/PATCH modifie ; DELETE supprime.
7. Le code HTTP 403 signifie…
- A.ressource introuvable
- B.non authentifié
- C.accès interdit (authentifié mais non autorisé)
- D.erreur serveur
Voir la réponse
Réponse : C. accès interdit (authentifié mais non autorisé)
401 = non authentifié ; 403 = interdit ; 404 = introuvable ; 500 = erreur serveur.
8. Dans MVC, le contrôleur…
- A.stocke les données
- B.reçoit la requête et orchestre modèle et vue
- C.affiche la page
- D.gère le réseau
Voir la réponse
Réponse : B. reçoit la requête et orchestre modèle et vue
Le modèle gère données et logique métier, la vue la présentation, le contrôleur le flux de la requête.
9. Quelle commande Git enregistre les modifications indexées dans l'historique local ?
- A.git push
- B.git add
- C.git commit
- D.git pull
Voir la réponse
Réponse : C. git commit
git add indexe, git commit enregistre localement, git push envoie au dépôt distant, git pull récupère.
Questions fréquentes
Quelle différence entre classe abstraite et interface ?
Une classe abstraite peut contenir des attributs et des méthodes implémentées en plus de méthodes abstraites, et une classe n'hérite que d'une seule classe ; une interface ne déclare que des méthodes (un contrat) et une classe peut en implémenter plusieurs.
Comment mémoriser les formes normales ?
1NF : des valeurs atomiques (pas de liste dans une cellule). 2NF : chaque attribut dépend de toute la clé (pas de dépendance partielle). 3NF : aucun attribut non-clé ne dépend d'un autre attribut non-clé. Mnémonique : « la clé, toute la clé, rien que la clé ».
Qu'attend le jury à l'épreuve E5 SLAM ?
Une application ou fonctionnalité conçue et développée en situation : modélisation UML et données, code structuré et sécurisé (requêtes préparées, validation des entrées), tests et documentation, avec la capacité d'expliquer et de justifier chaque choix technique.
Comment réviser le développement pour le BTS SIO ?
En codant régulièrement de petits projets complets (CRUD + API + vue), en écrivant le SQL à la main, en dessinant les diagrammes avant de coder, et en fixant le vocabulaire par flashcards et QCM générés depuis le cours (piliers POO, jointures, verbes HTTP, codes de statut).
