+ - 0:00:00
Notes for current slide
Notes for next slide

POO

Mateu Yábar Valles

1 / 20

Llicència

Pots copiar i redistribuir aquest material seguint la llicència Attribution-NonCommercial-ShareAlike 4.0 International CC BY-NC-SA 4.0, indicant-ne autors originals, l'origen (aquesta web), sense fins comercials i mantenint-ne aquesta la llicència

Autors:

2 / 20

POO

La programació orientada a objectes o POO (OOP segons les seves sigles en anglès) és un paradigma de programació que intenta proporcionar un model de programació basat en objectes que contenen dades i procediments associats coneguts com a mètodes. Aquests objectes, que solen ser instàncies de classes, són un tipus abstracte de dades que encapsulen (amaguen) tant les dades com les funcions per a accedir-hi.

3 / 20

POO

De vegades, els objectes corresponen a coses que es troben al món real. Per exemple, un programa de dibuix pot tenir objectes com "cercle", "quadrat", "menú". Un sistema de compres en línia pot tenir objectes com ara "carretó de la compra", "client" i "producte". De vegades, els objectes representen entitats més abstractes, com un objecte que representa un fitxer obert, o un objecte que proporciona un servei de traducció de mesures metriques a angleses.

  • Tot es pot representar usant objectes.
4 / 20

POO - exemples

  • data classes (domini)
    • Student
    • School
    • Robot
    • Rectangle
  • Other
    • StundentDao
    • StudentApi
    • StudentFileReader
    • PrintStream
    • Translator
5 / 20

Classe

  • Definició del format de dades i els procediments disponibles per a un tipus o classe d’objecte determinats.
    • Característiques (atributs,camps o propietats)
    • Comportaments
public class Rectangle {
// (...)
}
6 / 20

Atributs

  • Variables de l'instància
  • Dades que pertanyen a objectes individuals; cada objecte en té la seva pròpia còpia.
public class Rectangle {
// atributs
double height;
double width;
// (...)
}
// Desaconsellat: usar sempre getWidth()
double width = rectangle.width;
7 / 20

Mètode

  • És un algoritme associat a un objecte
  • Defineix un comportament d'un objecte
public class Rectangle {
// (...)
public double getWith(){
return with;
}
}
double width = rectangle.getWidth();
8 / 20

Objecte

  • Instància d'una classe
    • Exemple l'objecte amb l'atribut nom Maria és una instància de la classe empleat
Rectangle rectangle = new Rectangle(4.5, 2.5);
9 / 20

Variables de classe

  • Pertanyen a la classe en general
    • Només n'hi ha una còpia
    • S'utilitzen també per fer constants amb la paraula final
  • En java s'escriuen en Snake Case (All Caps)
    • VARIABLE_DE_CLASSE
public class Circle {
static final double PI = 3.14159265359;
}
double pi = Circle.PI;
10 / 20

Mètodes de classe

  • Pertanyen a la classe en general i tenen accés només a les variables de classe.
    • El seu us ha de ser molt limitat
public class Rectangle {
// ...
public static Rectangle readRectangle(Scanner scanner){
//...
}
}
Rectangle rectangle = Rectangle.readRectagle(scanner);
11 / 20

Static vs instància

Exemple estàtic

public class LeagueStatisticFunctions {
public static int countGoals(League league, Team team){
// TODO
}
public static List<Team> classification(League league){
// TODO
}
// ...
}
12 / 20

Static vs instància

Exemple instància

public class LeagueStatistics {
League league;
public LeagueStatistics(League league) {
this.league = league;
}
public int countGoals(Team team){
// TODO
}
public List<Team> classification(){
// TODO
}
// ...
}
13 / 20

Static vs instància

Exemple estàtic

public class FigureReadFuncions {
public static Rectangle readRectangle(Scanner scanner){
// TODO
}
public static List<Rectangle> readRectangles(Scanner scanner){
// TODO
}
public static Line readLine(Scanner scanner){
// TODO
}
// ...
}
14 / 20

Static vs instància

Exemple instància

public class FigureReader {
Scanner scanner;
public FigureReader(Scanner scanner) {
this.scanner = scanner;
}
public Rectangle readRectangle(){
// TODO
}
public List<Rectangle> readRectangles(){
// TODO
}
public Line readLine(){
// TODO
}
// ...
}
15 / 20

Static vs instància

  • En la majoria de casos és recomenable la versió no estàtica
16 / 20

UML

  • Llenguatge estàndard que permet especificar amb notació gràfica programari orientat a objectes.
  • Diagrama de classes
  • M05 - UF3
17 / 20

UML

classDiagram class Rectangle Rectangle : +double width Rectangle : +double height Rectangle : +double getArea()
18 / 20

UML

classDiagram class Student Student : +String name Student : +String surname class School School : +String name School : +String adress Student <-- School
19 / 20

Visibilitat - java

  • public
    • Tothom pot accedir a la variable o mètode
  • protected
    • Mateix package i subclasses
  • default
    • Mateix package
  • privat
    • Només la classe pot accedir
20 / 20

------------+-------+---------+--------------+--------------+-------- | Class | Package | Subclass | Subclass |Outside| | | |(same package)|(diff package)|Class | ————————————+———————+—————————+——————————----+—————————----—+———————— public | Yes | Yes | Yes | Yes | Yes |
————————————+———————+—————————+—————————----—+—————————----—+———————— protected | Yes | Yes | Yes | Yes | No |
————————————+———————+—————————+————————----——+————————----——+———————— default | Yes | Yes | Yes | No | No | ————————————+———————+—————————+————————----——+————————----——+———————— private | Yes | No | No | No | No | ------------+-------+---------+--------------+--------------+--------

Llicència

Pots copiar i redistribuir aquest material seguint la llicència Attribution-NonCommercial-ShareAlike 4.0 International CC BY-NC-SA 4.0, indicant-ne autors originals, l'origen (aquesta web), sense fins comercials i mantenint-ne aquesta la llicència

Autors:

2 / 20
Paused

Help

Keyboard shortcuts

, , Pg Up, k Go to previous slide
, , Pg Dn, Space, j Go to next slide
Home Go to first slide
End Go to last slide
Number + Return Go to specific slide
b / m / f Toggle blackout / mirrored / fullscreen mode
c Clone slideshow
p Toggle presenter mode
t Restart the presentation timer
?, h Toggle this help
Esc Back to slideshow