Primeiro taller de iniciación a OOP

VigoJUG & VigoTech Alliance

Axenda

  • VigoTech, VigoJUG e o reto

  • Talleres de iniciación

  • Instalar Java e un IDE

  • Clases, obxectos, atributos e métodos

  • Encapsulación e abstracción

  • Constructores

  • Exercicio da biblioteca

  • Dúbidas

VigoJUG

  • Un meetup o primeiro martes de cada mes

  • Involucrar as empresas locais e promover a tecnoloxía

  • ¿Te animas cunha charla?. Licencias de JetBrains ;-)

  • Outras iniciativas: clubes de lectura

  • Canal de slack #VigoJUG en http://www.vigotech.org

sponsors

O reto

  • Exercicio de programación breve (30 minutos) en GitHub

  • PRs (un directorio por cada usuaria)

  • Unha semana antes: se fecha e lanzamos enquisa

  • Charla lostrego no seguinte meetup

Talleres de iniciación

  • Un taller o tercer martes de cada mes

  • Rolda de preguntas para falar dun tema

  • Exercicio práctico para asentar os coñecementos

  • Calquera cousa que os traiades de casa

  • Abertos a outros formatos e iniciativas

Non sexades tímidos: ¡¡preguntar!!

timidos

Instalar Java e un IDE

Primeira parte

  • Clases, obxectos, atributos e métodos

  • Encapsulación e abstracción

Selecciona todas as correctas

  • Todas as variables son clases

Selecciona todas as correctas

  • Unha clase define un novo tipo

Selecciona todas as correctas

  • Unha instancia é unha realización de unha clase

Selecciona todas as correctas

  • A palabra chave class permite o acceso a instancia actual da clase, a partir de un dos seus métodos.

Selecciona todas as correctas

  • É posible acceder a instancia actual ca axuda da palabra chave this

Selecciona todas as correctas

  • A palabra chave public permite o acceso a instacia actual da clase, a partir de un dos seus métodos

Selecciona todas as correctas

  • Unha clase precisa o menos dunha variable para ser definida

Selecciona todas as correctas

  • Non é posible acceder a instancia actual dunha clase a partir de un dos seus métodos

Selecciona todas as correctas

  • Unha clase é unha realización dunha instancia

Selecciona todas as correctas

  • A palabra chave self permite o acceso a instancia actual da clase, a partir de un dos seus métodos

Selecciona todas as correctas

  • A palabra chave private permite o acceso a instancia actual da clase, a partir de un dos seus métodos

¿Cómo declaramos unha variable de tipo mazá?

  1. a = Maza();

  2. Maza(a);

  3. Maza a;

  4. Maza() = new a;

  5. Maza() a;

  6. Maza() = a;

¿Cal é a saída do seguinte programa?

class Rectangulo {

	double hauteur, largeur;

}
Rectangulo r1 = new Rectangulo();

Rectangulo r2 = new Rectangulo();

r1.hauteur = 3.0;

System.out.println((r1.hauteur + r2.hauteur));

¿Cal é a saída do seguinte programa?

  1. Imprime "3.0 + 3.0"

  2. Imprime "3.0"

  3. Imprime "6.0"

  4. Xenera unha excepción

  5. Non compila

¿Cal é a forma correcta de crear unha instancia da clase Rectangulo e chamar o método area?

Rectangulo.area();

¿Cal é a forma correcta de crear unha instancia da clase Rectangulo e chamar o método area?

area(Rectangulo);

¿Cal é a forma correcta de crear unha instancia da clase Rectangulo e chamar o método area?

Rectangulo r;
Rectangulo.area();

¿Cal é a forma correcta de crear unha instancia da clase Rectangulo e chamar o método area?

Rectangulo r;
area(r);

¿Cal é a forma correcta de crear unha instancia da clase Rectangulo e chamar o método area?

Rectangulo r;
r.area();

¿Cal é a forma correcta de crear unha instancia da clase Rectangulo e chamar o método area?

Rectangulo r = new Rectangulo();
r.area();

Temos a seguinte clase Punto

class Punto {

	private double x;
	private double y;

	public void setX(double newX){
		x = newX;
	}

	public void setY(double newY){
		y = newY;
	}

	public double getX(){ return x;}

	public double getY(){ return y;}
}

E o seguinte código

Punto p1 = new Punto();
Punto p2 = new Punto();

p1.setX(2.5);
p2.setY(4.0);

System.out.println(p1.getX() + ", " + p1.getY());
System.out.println(p2.getX() + ", " + p2.getY());

¿Qué imprime?

  1. 2.5, 4.0 e 2.5, 4.0

  2. 2.5, 0.0 e 0.0, 4.0

  3. 2.5, 0.0 e 2.5, 4.0

  4. 2.5, 0.0 e 4.0, 0.0

Temos a seguinte clase Libro

class Libro {

	private int numPages;
	public void setNumPages(int numPages) {
		numPages = this.numPages;
	}

	public void imprimir() {
		System.out.println(numPages);
	}
}

E o seguinte código

Libro libro = new Libro();

libro.setNumPages(150);

libro.imprimir();

¿Qué imprime?

  1. 0

  2. Non compila

  3. 150

Segunda parte

  • Constructores

¿Cal é a forma correcta de chamar o constructor da clase Persoa con "Tomás" é "Antón"?

Persoa p1;

p1.init("Tomás", "Antón");

¿Cal é a forma correcta de chamar o constructor da clase Persoa con "Tomás" é "Antón"?

Persoa p1.Persoa("Tomás", "Antón");

¿Cal é a forma correcta de chamar o constructor da clase Persoa con "Tomás" é "Antón"?

Persoa p1 = new Persoa("Tomás", "Antón");

¿Cal é a forma correcta de chamar o constructor da clase Persoa con "Tomás" é "Antón"?

Persoa p1 = new Persoa();

p1("Tomás", "Antón");

Dada a clase e o código seguintes, ¿cal é a saída?

class Square {
    private double sideLength = 10.0;

    public Square() {}
    public Square(double sideLength) {
        this();
    }

    public double getSideLength() { return sideLength; }
}
Square sq = new Square(8.0);
System.out.println(sq.getSideLength());

Dada a clase e o código seguintes, ¿cal é a saída?

  1. 8.0

  2. Non compila, a chamada a this non é valida

  3. 10.0

  4. 0

  5. Non compila, sideLength non está inicializado

Dada a clase seguinte, ¿qué instanciación é correcta?

class Rectangle {
    double largeur;
    double hauteur;

    public Rectangle() {
        largeur = 0.0;
        hauteur = 0.0;
    }

    public Rectangle(double lr, double hr) {
        largeur = lr;
        hauteur = hr;
    }

    public Rectangle(Rectangle r) {
        largeur = r.largeur;
        hauteur = r.hauteur;
    }
}

¿Esta instanciación é correcta?

Rectangle r = new Rectangle(Rectangle(2, 10));

¿Esta instanciación é correcta?

Rectangle r1 = new Rectangle();
Rectangle r2 = new Rectangle(r2);

¿Esta instanciación é correcta?

Rectangle r = new Rectangle(Rectangle());

¿Esta instanciación é correcta?

Rectangle r1 = new Rectangle();
Rectangle r2 = new Rectangle(r1);

¿Esta instanciación é correcta?

Rectangle r1 = new Rectangle(2, 10);
Rectangle r2 = new Rectangle(r1);
Rectangle r3 = new Rectangle(r2);

¿Esta instanciación é correcta?

Rectangle r = new Rectangle(10);

¿Esta instanciación é correcta?

Rectangle r1 = new Rectangle(2, 10);
Rectangle r2 = new Rectangle(r1);

¿Esta instanciación é correcta?

Rectangle r = new Rectangle(Rectangle(10, 2));

¿Esta instanciación é correcta?

Rectangle r = new Rectangle();

¿Esta instanciación é correcta?

Rectangle r = new Rectangle(2, 10);

Temos a seguinte clase

class Circle {
    private double radius;

    public void setRadius(double r) {
        radius = r;
    }

    public double getRadius() {
        return radius;
    }
}

¿Qué imprime o seguinte código?

Circle c1 = new Circle();
Circle c2 = new Circle();

c1.setRadius(5.0);
c2 = c1;
c1.setRadius(c2.getRadius());

System.out.println(c1.getRadius() + ", " + c2.getRadius());

¿Qué imprime o seguinte código?

  1. 5.0, 0.0

  2. 0.0, 5.0

  3. 0.0, 0.0

  4. 5.0, 5.0

Temos a seguinte clase

class Rectangle2 {
    private double largeur;
    private double hauteur;

    public Rectangle2(double lr, double hr) {
        largeur = lr;
        hauteur = hr;
    }
}

¿Qué imprime o seguinte código?

Rectangle2 r1 = new Rectangle2(2, 1);
Rectangle2 r2 = new Rectangle2(2, 1);

System.out.println(r1 == r2);
System.out.println(r1.equals(r2));
System.out.println(r2.equals(r1));

¿Qué imprime o seguinte código?

  1. true true true

  2. true false false

  3. false false false

  4. false true true

Exercicio da biblioteca

Dúbidas