Classes, Superclasses e Subclasses

Save this PDF as:
 WORD  PNG  TXT  JPG

Tamanho: px
Começar a partir da página:

Download "Classes, Superclasses e Subclasses"

Transcrição

1 Herança

2 Herança A idéia é criar novas Classes construindo-as sobre outras existentes Ao herdar de uma classe, reusamos (herdamos) seus métodos E podemos adicionar novos métodos e campos para adaptar a nova classe para novas situações

3 Classes, Superclasses e Subclasses Vamos aprimorar nosso exemplo de classe Employee, adicionando uma nova classe Manager Um gerente é um empregado [também] possui salário, tem uma data de contratação, um nome Mas, adicionalmente, pode ter um bônus no salário

4 Classes, Superclasses e Subclasses Vamos aprimorar nosso exemplo de classe Employee, adicionando uma nova classe Manager Um gerente é um empregado [também] possui salário, tem uma data de contratação, um nome Mas, adicionalmente, pode ter um bônus no salário Tudo o que foi implementado em Employee (atributos, métodos) é preservado public class Manager extends Employee // métodos e atributos adicionados

5 Classes, Superclasses e Subclasses Ao usar extends, indicamos que estamos criando uma nova classe que deriva de uma classe existente a classe existente é chamada superclasse, classe base ou classe pai a nova classe é chamada subclasse, classe derivada ou classe filha public class Manager extends Employee // métodos e atributos adicionados

6 Classes, Superclasses e Subclasses Apesar da denominação talvez dar a entender o contrário, a superclasse não é superior à subclasse. O contrário que é verdade, uma vez que a subclasse herda tudo que a superclasse possui e Ao usar extends, indicamos que estamos criando uma nova classe que deriva de uma classe existente adiciona novas funcionalidades. a classe existente é chamada superclasse, classe base ou classe pai a nova classe é chamada subclasse, classe derivada ou classe filha public class Manager extends Employee // métodos e atributos adicionados

7 public class Manager extends Employee private double bonus; // outros atributos e métodos public void setbonus(double b) bonus = b;

8 public class Manager extends Employee private double bonus; // outros atributos e métodos public void setbonus(double b) bonus = b; //se temos um objeto do tipo Manager Manager boss =...; boss.setbonus(5000);

9 public class Manager extends Employee private double bonus; // outros atributos e métodos public void setbonus(double b) bonus = b; //se temos um objeto do tipo Manager Manager boss =...; boss.setbonus(5000); //se temos um objeto do tipo Employee Employee emp =...; emp.setbonus(5000); //ERRO!! O método não existe

10 public class Manager extends Employee private double bonus; // outros atributos e métodos public void setbonus(double b) bonus = b; //se temos um objeto do tipo Manager Manager boss =...; boss.setbonus(5000); boss.getname(); boss.getsalary(); boss.gethireday();

11 public class Employee private String name; private double salary; private Date hireday; public class Manager extends Employee private double bonus; day) public Employee(String name = n; salary = s; GregorianCalendar month - 1, day); hireday = calendar.gettime(); public String getname() return name; n, double s, int year, int month, int calendar = new GregorianCalendar(year, // outros atributos e métodos public void setbonus(double b) bonus = b; public double getsalary() return salary; public Date gethireday() return hireday; public void raisesalary(double bypercent) double raise = salary * bypercent / 100; salary += raise; Além de poder usar os métodos da superclasse, todos os campos em Employee também existem em Manager. Ou seja, todos os objetos do tipo Manager têm 4 atributos: name, salary, hireday e bonus.

12 public class Employee private String name; private double salary; private Date hireday; public class Manager extends Employee private double bonus; day) public Employee(String name = n; salary = s; GregorianCalendar month - 1, day); hireday = calendar.gettime(); public String getname() return name; n, double s, int year, int month, int calendar = new GregorianCalendar(year, // outros atributos e métodos public void setbonus(double b) bonus = b; public double getsalary() return salary; public Date gethireday() return hireday; public void raisesalary(double bypercent) double raise = salary * bypercent / 100; salary += raise; Ao criar uma subclasse, herdamos tudo e apenas indicamos (implementamos) as diferenças entre elas. Uma ação comum de refatorção de código em Orientação à Objetos é justamente criar superclasses mais genéricas com código comum.

13 public class Employee private String name; private double salary; private Date hireday; public class Manager extends Employee private double bonus; day) public Employee(String name = n; salary = s; GregorianCalendar month - 1, day); hireday = calendar.gettime(); public String getname() return name; n, double s, int year, int month, int calendar = new GregorianCalendar(year, // outros atributos e métodos public void setbonus(double b) bonus = b; public double getsalary() return salary; public Date gethireday() return hireday; esse método funciona adequadamente para um Manager? public void raisesalary(double bypercent) double raise = salary * bypercent / 100; salary += raise;

14 public class Employee private String name; private double salary; private Date hireday; day) public Employee(String name = n; salary = s; GregorianCalendar month - 1, day); hireday = calendar.gettime(); n, double s, int year, int month, int calendar = new GregorianCalendar(year, public class Manager extends Employee private double bonus; // outros atributos e métodos public double getsalary() return salary + bonus; //não! public String getname() return name; public double getsalary() return salary; public void setbonus(double b) bonus = b; public Date gethireday() return hireday; sobreposição (override) public void raisesalary(double bypercent) double raise = salary * bypercent / 100; salary += raise;

15 public class Employee private String name; private double salary; private Date hireday; day) public Employee(String name = n; salary = s; GregorianCalendar month - 1, day); hireday = calendar.gettime(); n, double s, int year, int month, int calendar = new GregorianCalendar(year, public class Manager extends Employee private double bonus; // outros atributos e métodos public double getsalary() return salary + bonus; //não! public String getname() return name; public double getsalary() return salary; public void setbonus(double b) bonus = b; public Date gethireday() return hireday; subclasses não podem acessar os atributos privados da superclasse! public void raisesalary(double bypercent) double raise = salary * bypercent / 100; salary += raise;

16 public class Employee private String name; private double salary; private Date hireday; day) public Employee(String name = n; salary = s; GregorianCalendar month - 1, day); hireday = calendar.gettime(); n, double s, int year, int month, int calendar = new GregorianCalendar(year, public class Manager extends Employee private double bonus; // outros atributos e métodos public double getsalary() return getsalary() + bonus;// ainda n! public String getname() return name; public double getsalary() return salary; public void setbonus(double b) bonus = b; public Date gethireday() return hireday; subclasses podem acessar os atributos e métodos públicos da superclasse! public void raisesalary(double bypercent) double raise = salary * bypercent / 100; salary += raise;

17 public class Employee private String name; private double salary; private Date hireday; day) public Employee(String name = n; salary = s; GregorianCalendar month - 1, day); hireday = calendar.gettime(); n, double s, int year, int month, int calendar = new GregorianCalendar(year, public class Manager extends Employee private double bonus; // outros atributos e métodos public double getsalary() return getsalary() + bonus;// ainda n! public String getname() return name; public double getsalary() return salary; public Date gethireday() return hireday; public void setbonus(double b) bonus = b; public void raisesalary(double bypercent) double raise = salary * bypercent / 100; salary += raise;

18 public class Employee private String name; private double salary; private Date hireday; public class Manager extends Employee private double bonus; day) public Employee(String name = n; salary = s; GregorianCalendar month - 1, day); hireday = calendar.gettime(); public String getname() return name; public double getsalary() return salary; n, double s, int year, int month, int calendar = new GregorianCalendar(year, // outros atributos e métodos public double getsalary() double basesalary = super.getsalary(); return basesalary + bonus; public void setbonus(double b) bonus = b; public Date gethireday() return hireday; indicação que desejamos acessarum método sobreposto da superclasse public void raisesalary(double bypercent) double raise = salary * bypercent / 100; salary += raise;

19 public class Employee private String name; private double salary; private Date hireday; public class Manager extends Employee private double bonus; day) public Employee(String name = n; salary = s; GregorianCalendar month - 1, day); hireday = calendar.gettime(); public String getname() return name; public double getsalary() return salary; public Date gethireday() return hireday; n, double s, int year, int month, int calendar = new GregorianCalendar(year, public void raisesalary(double bypercent) double raise = salary * bypercent / 100; salary += raise; // outros atributos e métodos public double getsalary() double basesalary = super.getsalary(); return basesalary + bonus; public void setbonus(double b) bonus = b; Ao criar uma subclasse, herdamos tudo e apenas indicamos (implementamos) as diferenças entre elas. Podemos adicionar adicionar atributos e adicionar ou sobrepor métodos mas nunca podemos remover atributos ou métodos!

20 public class Employee private String name; private double salary; private Date hireday; public class Manager extends Employee private double bonus; day) public Employee(String name = n; salary = s; GregorianCalendar month - 1, day); hireday = calendar.gettime(); public String getname() return name; public double getsalary() return salary; public Date gethireday() return hireday; n, double s, int year, int month, int calendar = new GregorianCalendar(year, public void raisesalary(double bypercent) double raise = salary * bypercent / 100; salary += raise; // outros atributos e métodos public double getsalary() double basesalary = super.getsalary(); return basesalary + bonus; public void setbonus(double b) bonus = b; Ao criar uma subclasse, herdamos tudo e apenas indicamos (implementamos) as diferenças entre elas. Podemos adicionar adicionar atributos e adicionar ou sobrepor métodos mas nunca podemos remover atributos ou métodos!

21 public class Employee private String name; private double salary; private Date hireday; day) public Employee(String name = n; salary = s; GregorianCalendar month - 1, day); hireday = calendar.gettime(); n, double s, int year, int month, int calendar = new GregorianCalendar(year, public class Manager extends Employee private double bonus; public Manager(String n, double s, int year, int month, int day) super(n, s, year, month, day); bonus = 0; public String getname() return name; public double getsalary() return salary; public Date gethireday() return hireday; public void raisesalary(double bypercent) double raise = salary * bypercent / 100; salary += raise; public double getsalary() double basesalary = super.getsalary(); return basesalary + bonus; public void setbonus(double b) bonus = b;

22 public class Employee private String name; private double salary; private Date hireday; day) public Employee(String name = n; salary = s; GregorianCalendar month - 1, day); hireday = calendar.gettime(); n, double s, int year, int month, int calendar = new GregorianCalendar(year, public class Manager extends Employee private double bonus; public Manager(String n, double s, int year, int month, int day) super(n, s, year, month, day); bonus = 0; public String getname() return name; public double getsalary() return salary; public Date gethireday() return hireday; public void raisesalary(double bypercent) double raise = salary * bypercent / 100; salary += raise; public double getsalary() double basesalary = super.getsalary(); return basesalary + bonus; public void setbonus(double b) bonus = b; chama o construtor da superclasse única forma de inicializar os atributos privados herdados da superclasse

23 public class Employee private String name; private double salary; private Date hireday; day) public Employee(String name = n; salary = s; GregorianCalendar month - 1, day); hireday = calendar.gettime(); n, double s, int year, int month, int calendar = new GregorianCalendar(year, public class Manager extends Employee private double bonus; public Manager(String n, double s, int year, int month, int day) super(n, s, year, month, day); bonus = 0; public String getname() return name; public double getsalary() return salary; public Date gethireday() return hireday; public void raisesalary(double bypercent) double raise = salary * bypercent / 100; salary += raise; public double getsalary() double basesalary = super.getsalary(); return basesalary + bonus; Se nenhum construtor public voidda setbonus(double superclasse b) é chamado explícitamente, o construtor padrão é chamado automaticamente. bonus Caso= b; não exista o construtor padrão é gerado um erro de compilação. As mesmas regras gerais sobre construtores também se aplicam as subclasses.

24 // constrói um Manager Manager boss = new Manager("Carl Cracker", 80000, 1987, 12, 15); boss.setbonus(5000); Employee[] staff = new Employee[3]; // preenche o array com Manager e Employee staff[0] = boss; staff[1] = new Employee("Harry Hacker", 50000, 1989, 10, 1); staff[2] = new Employee("Tommy Tester", 40000, 1990, 3, 15); // imprime informacoes sobre os empregados for (Employee e : staff) System.out.println("name=" + e.getname() + ",salary=" + e.getsalary());

25 // constrói um Manager Manager boss = new Manager("Carl Cracker", 80000, 1987, 12, 15); boss.setbonus(5000); Employee[] staff = new Employee[3]; // preenche o array com Manager e Employee staff[0] = boss; staff[1] = new Employee("Harry Hacker", 50000, 1989, 10, 1); staff[2] = new Employee("Tommy Tester", 40000, 1990, 3, 15); // imprime informacoes sobre os empregados for (Employee e : staff) System.out.println("name=" + e.getname() + ",salary=" + e.getsalary()); // saída do programa name=carl Cracker,salary= name=harry Hacker,salary= name=tommy Tester,salary=

26 // constrói um Manager Manager boss = new Manager("Carl Cracker", 80000, 1987, 12, 15); boss.setbonus(5000); Employee[] staff = new Employee[3]; // preenche o array com Manager e Employee staff[0] = boss; staff[1] = new Employee("Harry Hacker", 50000, 1989, 10, 1); staff[2] = new Employee("Tommy Tester", 40000, 1990, 3, 15); // imprime informacoes sobre os empregados for (Employee e : staff) System.out.println("name=" + e.getname() + ",salary=" + e.getsalary()); é sempre executado o método correto// de acordo saídacom do o tipo programa do objeto name=carl Cracker,salary= name=harry Hacker,salary= name=tommy Tester,salary=

27 // constrói um Manager Manager boss = new Manager("Carl Cracker", 80000, 1987, 12, 15); boss.setbonus(5000); Employee[] staff = new Employee[3]; // preenche o array com Manager e Employee staff[0] = boss; staff[1] = new Employee("Harry Hacker", 50000, 1989, 10, 1); staff[2] = new Employee("Tommy Tester", 40000, 1990, 3, 15); // imprime informacoes sobre os empregados for (Employee e : staff) System.out.println("name=" + e.getname() + ",salary=" + e.getsalary()); O fato de uma variável objeto poder referenciar múltiplos tipos reais diferentes é chamado polimorfismo. O fato de automaticamente chamar os metodos corretos, de acordo com o tipo real de um objeto, é chamado ligação dinâmica.

28 Hierarquia da Herança Podemos adionar muitas outras subclasses em Manager Por exemplo: Executive A coleção de todas as classes que herdam de uma superclasse comum é chamada de hierarquia da herança O caminho de uma subclasse em particular pelos seus ancestrais é chamado de cadeia hierárquica

29 Polimorfismo Uma regra simples para ajudar na decisão de usar ou não herança é a regra do é um Todo gerente é um empregado, mas nem todo empregado é gerente Outro é o princípio da substituição Indica que você pode usar um objeto da subclasse quando o programa espera um da superclasse Toda variável objeto em Java é polimórfica!

30 Polimorfismo Uma regra simples para ajudar na decisão de usar ou não herança é a regra do é um Um gerente é um empregado, mas nem todo empregado é gerente Outro é o princípio da substituição Indica que você pode usar um objeto da subclasse quando o programa espera um da superclasse Toda variável objeto em Java é polimórfica! Employee e; e = new Employee("João", 1000, 2015, Calendar.OCTOBER, 20); e = new Manager("João", 1000, 2015, Calendar.OCTOBER, 20); Manager boss = new Manager("Carl Cracker, 80000, 1987, 12, 15); Employee[] staff = new Employee[3]; staff[0] = boss; staff[1] = new Employee("Harry Hacker", 50000, 1989, 10, 1);

31 // constrói um Manager Manager boss = new Manager("Carl Cracker", 80000, 1987, 12, 15); boss.setbonus(5000); Employee[] staff = new Employee[3]; // preenche o array com Manager e Employee staff[0] = boss; staff[1] = new Employee("Harry Hacker", 50000, 1989, 10, 1); staff[2] = new Employee("Tommy Tester", 40000, 1990, 3, 15); // imprime informacoes sobre os empregados for (Employee e : staff) System.out.println("name=" + e.getname() + ",salary=" + e.getsalary()); se referem ao mesmo objeto

32 // constrói um Manager Manager boss = new Manager("Carl Cracker", 80000, 1987, 12, 15); boss.setbonus(5000); Employee[] staff = new Employee[3]; // preenche o array com Manager e Employee staff[0] = boss; staff[1] = new Employee("Harry Hacker", 50000, 1989, 10, 1); staff[2] = new Employee("Tommy Tester", 40000, 1990, 3, 15); // imprime informacoes sobre os empregados for (Employee e : staff) System.out.println("name=" + e.getname() + ",salary=" + e.getsalary()); boss.setbonus(5000); // OK staff[0].setbonus(5000); // Erro! Manager m = staff[0]; // Erro!

33 Prevenindo a Herança Classes e métodos finais com o modificador final Pode ser útil quando você não quer que alguma subclasse mude a semântica de um método Ou ainda quando existe um método importante e complexo que você nãoquerqueumasubclasse faça alguma besteira vocêassume toda a responsabilidade por esse método

34 Prevenindo a Herança Classes e métodos finais com o modificador final public class Employee nenhuma subclasse pode sobrepôr public Employee(String n, double s, int year, int month, int day) name = n; salary = s; GregorianCalendar calendar = new GregorianCalendar(year, month - 1, day); hireday = calendar.gettime(); public final String getname() return name;

35 Prevenindo a Herança Classes e métodos finais com o modificador final public final class Employee nenhuma subclasse pode ser criada public Employee(String n, double s, int year, int month, int day) name = n; salary = s; GregorianCalendar calendar = new GregorianCalendar(year, month - 1, day); hireday = calendar.gettime(); public String getname() return name;

36 // constrói um Manager Manager boss = new Manager("Carl Cracker", 80000, 1987, 12, 15); boss.setbonus(5000); Employee[] staff = new Employee[3]; // preenche o array com Manager e Employee staff[0] = boss; staff[1] = new Employee("Harry Hacker", 50000, 1989, 10, 1); staff[2] = new Employee("Tommy Tester", 40000, 1990, 3, 15); // imprime informacoes sobre os empregados for (Employee e : staff) System.out.println("name=" + e.getname() + ",salary=" + e.getsalary()); // Coerção Manager m = (Manager) staff[0]; // OK Manager m = (Manager) staff[1]; // Erro!

37 // constrói um Manager Manager boss = new Manager("Carl Cracker", 80000, 1987, 12, 15); boss.setbonus(5000); Employee[] staff = new Employee[3]; // preenche o array com Manager e Employee staff[0] = boss; staff[1] = new Employee("Harry Hacker", 50000, 1989, 10, 1); staff[2] = new Employee("Tommy Tester", 40000, 1990, 3, 15); // imprime informacoes sobre os empregados for (Employee e : staff) System.out.println("name=" + e.getname() + ",salary=" + e.getsalary()); // Coerção if (staff[1] instanceof Manager) boss = (Manager) staff[1];

38 Classes Abstratas Uma superclasse pode ser tão genérica que pode se tornar apenas uma base (ou modelo) e não uma classe que poderia gerar instâncias utilizáveis Pode possuirmétodos quesó permitam implementaçõesem uma subclasse Por exemplo, adicionando uma classe Person como super classe de Employee e Manager

39 public abstract class Person public abstract String getdescription(); private String name; public Person(String n) name = n; faz sentido para toda pessoa (empregado, gerente ) public String getname() return name;

40 public abstract class Person public abstract String getdescription(); private String name; public Person(String n) como descrever uma pessoa (nome, salário) se não sabemos qual função dela? name = n; public String getname() return name;

41 public abstract class Person public abstract String getdescription(); private String name; public Person(String n) name = n; public String getname() return name; define método como abstrato sem implementação

42 public abstract class Person public abstract String getdescription(); private String name; public Person(String n) name = n; public String getname() return name; a classe também deve ser abstrata

43 public abstract class Person public abstract String getdescription(); private String name; public Person(String n) name = n; public String getname() return name; pode possuir atributos e métodos concretos!

44 public abstract class Person public abstract String getdescription(); private String name; public Person(String n) name = n; public String getname() return name; Person p = new Person("João"); // Erro! Person p = new Employee("Harry Hacker", 50000, 1989, 10, 1); // OK public class Employee extends Person private double salary; private Date hireday; public Employee(String n, double s, int year, int month, int day) super(n); salary = s; GregorianCalendar calendar = new GregorianCalendar(year, month - 1, day); hireday = calendar.gettime(); public String getdescription() return String.format("an employee with a salary of $%.2f", salary); //...

45 public abstract class Person public abstract String getdescription(); private String name; public Person(String n) name = n; public String getname() return name; public class Student extends Person private String major; public Student(String n, String m) super(n); major = m; public class Employee extends Person private double salary; private Date hireday; public Employee(String n, double s, int year, int month, int day) super(n); salary = s; GregorianCalendar calendar = new GregorianCalendar(year, month - 1, day); hireday = calendar.gettime(); public String getdescription() return String.format("an employee with a salary of $%.2f", salary); //... public String getdescription() return "a student majoring in " + major;

46 public abstract class Person public abstract String getdescription(); private String name; public Person(String n) name = n; public String getname() return name; public class Student extends Person private String major; public Student(String n, String m) super(n); major = m; public String getdescription() return "a student majoring in " + major; public class Employee extends Person private double salary; private Date hireday; public Employee(String n, double s, int year, int month, int day) super(n); salary = s; GregorianCalendar calendar = new GregorianCalendar(year, month - 1, day); hireday = calendar.gettime(); public String getdescription() return String.format("an employee with a salary of $%.2f", salary); //... Person[] people = new Person[2]; people[0] = new Employee("Harry Hacker", 50000, 1989, 10, 1); people[1] = new Student("Maria Morris", "computer science"); for (Person p : people) System.out.println(p.getName() + ", " + p.getdescription());

47 public abstract class Person public abstract String getdescription(); private String name; public Person(String n) name = n; public String getname() return name; public class Employee extends Person private double salary; private Date hireday; public Employee(String n, double s, int year, int month, int day) super(n); salary = s; GregorianCalendar calendar = new GregorianCalendar(year, month - 1, day); hireday = calendar.gettime(); public String getdescription() Person[] people = new Person[2]; return String.format("an employee with public class Student extends people[0] Person= new Employee("Harry Hacker", a salary 50000, of $%.2f", 1989, 10, salary); 1); people[1] = new Student("Maria Morris", "computer science"); private String major; public Student(Stringfor n, (Person String m) p : people) super(n); major = m; //... System.out.println(p.getName() + ", " + p.getdescription()); // saída do programa public String getdescription() return "a student majoring in " + major; Harry Hacker, an employee with a salary of $50000,00 Maria Morris, a student majoring in computer science

48 public abstract class Person public abstract String getdescription(); private String name; public Person(String n) name = n; public String getname() return name; public class Student extends Person private String major; public Student(String n, String m) super(n); major = m; public String getdescription() return "a student majoring in " + major; public class Employee extends Person private double salary; private Date hireday; public Employee(String n, double s, int year, int month, int day) super(n); salary = s; GregorianCalendar calendar = new GregorianCalendar(year, month - 1, day); hireday = calendar.gettime(); public String getdescription() return String.format("an employee with a salary of $%.2f", salary); //... só é possível chamar em Pessoa por ter declarado como abstrato, não baster ser implementado nas subclasses Person[] people = new Person[2]; people[0] = new Employee("Harry Hacker", 50000, 1989, 10, 1); people[1] = new Student("Maria Morris", "computer science"); for (Person p : people) System.out.println(p.getName() + ", " + p.getdescription());

49 public abstract class Person private String name; private int age = -1; public class Employee extends Person private double salary; private Date hireday; public Person(String n) name = n; public String getname() return name; public int getage() return age; protected void setage(int anage) age = anage; public abstract String getdescription(); public Employee(String n, double s, int year, int month, int day) super(n); setage(25); salary = s; GregorianCalendar calendar = new GregorianCalendar(year, month - 1, day); hireday = calendar.gettime(); public String getdescription() return String.format("an employee with a salary of $%.2f", salary); //...

50 public abstract class Person private String name; private int age = -1; public class Employee extends Person private double salary; private Date hireday; public Person(String n) name = n; public String getname() return name; public int getage() return age; protected void setage(int anage) age = anage; public abstract String getdescription(); pode chamar public Employee(String n, double s, int year, int month, int day) super(n); setage(25); salary = s; GregorianCalendar calendar = new GregorianCalendar(year, month - 1, day); hireday = calendar.gettime(); public String getdescription() return String.format("an employee with a salary of $%.2f", salary); //...

51 public abstract class Person private String name; private int age = -1; public Person(String n) name = n; public String getname() return name; public int getage() return age; protected void setage(int anage) age = anage; public abstract String getdescription(); não pode chamar public class Employee extends Person private double salary; private Date hireday; public Employee(String n, double s, int year, int month, int day) super(n); setage(25); salary = s; GregorianCalendar calendar = new GregorianCalendar(year, month - 1, day); hireday = calendar.gettime(); public String getdescription() return String.format("an employee with a salary of $%.2f", salary); //... Person[] people = new Person[2]; people[0] = new Employee("Harry Hacker", 50000, 1989, 10, 1); people[1] = new Student("Maria Morris", "computer science"); for (Person p : people) p.setage(21);

52 Modificadores de Acesso Modificador public protected private padrão (nenhummodificador) Visibilidade Para o mundo Para o pacote e todas subclasses Apenas para a classe Para o pacote

53 A Classe Object Todo objeto em Java herda dessa classe mesmo que não explicitamente Alguns métodos são úteis boolean equals(object obj) int hashcode() String tostring()

54 public class ArrayListTest public static void main(string[] args) ArrayList<Employee> staff = new ArrayList<Employee>(); staff.add(new Employee("Carl Cracker", 75000, 1987, 12, 15)); staff.add(new Employee("Harry Hacker", 50000, 1989, 10, 1)); staff.add(new Employee("Tony Tester", 40000, 1990, 3, 15)); for (Employee e : staff) e.raisesalary(5); staff.get(0); staff.remove(1); Employee joao = new Employee("João", 45000, 2001, 2, 1); staff.remove(joao);

55 public class Manager extends Employee private double bonus; public Manager(String n, double s, int year, int month, int day) super(n, s, year, month, day); bonus = 0; public double getsalary() double basesalary = super.getsalary(); return basesalary + bonus; public void setbonus(double... somebonus) bonus = 0; for (double b : somebonus) bonus += b; Manager boss = new Manager("Carl Cracker", 80000, 1987, 12, 15); boss.setbonus(5000, 4000, 1000);

56 name = "java.lang.string"; Class cl = Class.forName(name); Class supercl = cl.getsuperclass(); String modifiers = Modifier.toString(cl.getModifiers()); if (modifiers.length() > 0) System.out.print(modifiers + " "); System.out.print("class " + name); if (supercl!= null && supercl!= Object.class) System.out.print(" extends " + supercl.getname()); System.out.print("\n\n"); printconstructors(cl); System.out.println(); printmethods(cl); System.out.println(); printfields(cl); System.out.println(""); public static void printmethods(class cl) Method[] methods = cl.getdeclaredmethods(); for (Method m : methods) Class rettype = m.getreturntype(); String name = m.getname(); System.out.print(" "); // print modifiers, return type and method name String modifiers = Modifier.toString(m.getModifiers()); if (modifiers.length() > 0) System.out.print(modifiers + " " System.out.print(retType.getName() + " " + name + "("); // print parameter types Class[] paramtypes = m.getparametertypes(); for (int j = 0; j < paramtypes.length; j++) if (j > 0) System.out.print(", "); System.out.print(paramTypes[j].getName()); System.out.println(");");

57 name = "java.lang.string"; Class cl = Class.forName(name); Class supercl = cl.getsuperclass(); String modifiers = Modifier.toString(cl.getModifiers()); if (modifiers.length() > 0) System.out.print(modifiers + " "); System.out.print("class " + name); if (supercl!= null && supercl!= Object.class) System.out.print(" extends " + supercl.getname()); System.out.print("\n\n"); printconstructors(cl); System.out.println(); printmethods(cl); System.out.println(); printfields(cl); System.out.println(""); // saída do programa public static void printmethods(class cl) Method[] methods = cl.getdeclaredmethods(); for (Method m : methods) Class rettype = m.getreturntype(); String name = m.getname(); System.out.print(" "); // print modifiers, return type and method name String modifiers = Modifier.toString(m.getModifiers()); if (modifiers.length() > 0) System.out.print(modifiers + " " System.out.print(retType.getName() + " " + name + "("); // print parameter types Class[] paramtypes = m.getparametertypes(); for (int j = 0; j < paramtypes.length; j++) if (j > 0) System.out.print(", "); System.out.print(paramTypes[j].getName()); System.out.println(");"); public boolean equals(java.lang.object); public java.lang.string tostring(); public int hashcode(); public int compareto(java.lang.string); public volatile int compareto(java.lang.object); public int indexof(int); public int indexof(java.lang.string);

Programação Orientada a Objetos em Java. Herança

Programação Orientada a Objetos em Java. Herança Universidade Federal do Amazonas Departamento de Ciência da Computação IEC481 Projeto de Programas Programação Orientada a Objetos em Java Herança Professor: César Melo Slides baseados em materiais preparados

Leia mais

Módulo 06 Desenho de Classes

Módulo 06 Desenho de Classes Módulo 06 Desenho de Classes Última Atualização: 13/06/2010 1 Objetivos Definir os conceitos de herança, polimorfismo, sobrecarga (overloading), sobreescrita(overriding) e invocação virtual de métodos.

Leia mais

BCC221 Programação Orientada a Objetos. Prof. Marco Antonio M. Carvalho 2014/2

BCC221 Programação Orientada a Objetos. Prof. Marco Antonio M. Carvalho 2014/2 BCC221 Programação Orientada a Objetos Prof. Marco Antonio M. Carvalho 2014/2 Site da disciplina: http://www.decom.ufop.br/marco/ Moodle: www.decom.ufop.br/moodle Lista de e- mails: bcc221- decom@googlegroups.com

Leia mais

Capítulo 5 Reuso de Classes

Capítulo 5 Reuso de Classes Java and all Java-based marks are trademarks or registered trademarks of Sun Microsystems, Inc. in the U.S. and other countries. Desenvolvimento Orientado a Objetos com Java Capítulo 5 Reuso de Classes

Leia mais

Reuso com Herança a e Composiçã

Reuso com Herança a e Composiçã Java 2 Standard Edition Reuso com Herança a e Composiçã ção Helder da Rocha www.argonavis.com.br 1 Como aumentar as chances de reuso Separar as partes que podem mudar das partes que não mudam. Exemplo:

Leia mais

Técnicas de Programação II

Técnicas de Programação II Técnicas de Programação II Aula 06 Orientação a Objetos e Classes Edirlei Soares de Lima Orientação a Objetos O ser humano se relaciona com o mundo através do conceito de objetos.

Leia mais

Lista de Contas: Assinatura. Lista de Contas. Listas de Contas: Descrição. Listas de Contas: Descrição. Listas de Contas: Descrição

Lista de Contas: Assinatura. Lista de Contas. Listas de Contas: Descrição. Listas de Contas: Descrição. Listas de Contas: Descrição Lista de Contas Lista de Contas: Assinatura null Quais são os métodos necessários? class ListaDeContas { void inserir (Conta c) { void retirar (Conta c) { Conta procurar (String num) { Listas de Contas:

Leia mais

Programação Orientada a Objetos em java. Polimorfismo

Programação Orientada a Objetos em java. Polimorfismo Programação Orientada a Objetos em java Polimorfismo Polimorfismo Uma característica muito importante em sistemas orientados a objetos Termo proveniente do grego, e significa muitas formas Em POO, significa

Leia mais

Encapsulamento de Dados

Encapsulamento de Dados Encapsulamento de Dados Universidade Católica de Pernambuco Ciência da Computação Prof. Márcio Bueno poonoite@marciobueno.com Fonte: Material da Profª Karina Oliveira Modificadores de Visibilidade Especificam

Leia mais

Programação por Objectos. Java

Programação por Objectos. Java Programação por Objectos Java Parte 2: Classes e objectos LEEC@IST Java 1/24 Classes (1) Sintaxe Qualif* class Ident [ extends IdentC] [ implements IdentI [,IdentI]* ] { [ Atributos Métodos ]* Qualif:

Leia mais

7 RTTI e Interfaces. Desenvolvimento OO com Java. Vítor E. Silva Souza (vitorsouza@inf.ufes.br) http://www.inf.ufes.

7 RTTI e Interfaces. Desenvolvimento OO com Java. Vítor E. Silva Souza (vitorsouza@inf.ufes.br) http://www.inf.ufes. Desenvolvimento OO com Java 7 RTTI e Interfaces Vítor E. Silva Souza (vitorsouza@inf.ufes.br) http://www.inf.ufes.br/ ~ vitorsouza Departamento de Informática Centro Tecnológico Universidade Federal do

Leia mais

Programação por Objectos. Java

Programação por Objectos. Java Programação por Objectos Java Parte 6: Herança e Polimorfismo LEEC@IST Java 1/52 Herança revisão A herança é um mecanismo em que a subclasse constitui uma especialização da superclasse. A superclasse pode

Leia mais

Java 2 Standard Edition Como criar classes e objetos

Java 2 Standard Edition Como criar classes e objetos Java 2 Standard Edition Como criar classes e objetos Helder da Rocha www.argonavis.com.br 1 Assuntos abordados Este módulo explora detalhes da construção de classes e objetos Construtores Implicações da

Leia mais

Computação II Orientação a Objetos

Computação II Orientação a Objetos Computação II Orientação a Objetos Fabio Mascarenhas - 2014.1 http://www.dcc.ufrj.br/~fabiom/java Classes abstratas Até agora, usamos interfaces toda vez que queríamos representar algum conceito abstrato

Leia mais

Computação II - Java Prof. Adriano Joaquim de Oliveira Cruz Aula Prática - Herança, Polimorfismo e Construtores

Computação II - Java Prof. Adriano Joaquim de Oliveira Cruz Aula Prática - Herança, Polimorfismo e Construtores Computação II - Java Prof. Adriano Joaquim de Oliveira Cruz Aula Prática - Herança, Polimorfismo e Construtores 1 Exercícios Exercício 1: Construtores e Testes Analise a classe Conta.java, mostrada na

Leia mais

Herança. Alberto Costa Neto DComp - UFS

Herança. Alberto Costa Neto DComp - UFS Herança Alberto Costa Neto DComp - UFS 1 Motivação Vimos como se faz encapsulamento e a importância de fazê-lo... Contudo, também é possível fazer encapsulamento em algumas linguagens não OO O que mais

Leia mais

Programação Orientada a Objetos em Java

Programação Orientada a Objetos em Java Programação Orientada a Objetos em Java Rone Ilídio da Silva Universidade Federal de São João del-rei Campus Alto Paraopeba 1:14 1 Objetivo Apresentar os principais conceitos de Programção Orientada a

Leia mais

Módulo 07 Características Avançadas de Classes

Módulo 07 Características Avançadas de Classes Módulo 07 Características Avançadas de Classes Última Atualização: 15/06/2010 1 Objetivos Descrever variáveis, métodos e iniciadores static Descrever a semântica do modificador final em classes, métodos

Leia mais

Curso Java Starter. www.t2ti.com 1

Curso Java Starter. www.t2ti.com 1 1 Apresentação O Curso Java Starter foi projetado com o objetivo de ajudar àquelas pessoas que têm uma base de lógica de programação e desejam entrar no mercado de trabalho sabendo Java, A estrutura do

Leia mais

Introdução à Programação. Interface, Polimorfismo e Dynamic Binding

Introdução à Programação. Interface, Polimorfismo e Dynamic Binding Introdução à Programação Interface, Polimorfismo e Dynamic Binding Interface Programador Java PLENO Possuir sólida experiência em programação Desenvolvimento na linguagem JAVA Webservice, Struts ou JSF(desejável)

Leia mais

Análise e Projeto Orientados por Objetos

Análise e Projeto Orientados por Objetos Análise e Projeto Orientados por Objetos Aula 01 Orientação a Objetos Edirlei Soares de Lima Paradigmas de Programação Um paradigma de programação consiste na filosofia adotada na

Leia mais

BSI UFRPE Prof. Gustavo Callou gcallou@gmail.com

BSI UFRPE Prof. Gustavo Callou gcallou@gmail.com BSI UFRPE Prof. Gustavo Callou gcallou@gmail.com HelloWorld.java: public class HelloWorld { public static void main (String[] args) { System.out.println( Hello, World ); } } Identificadores são usados

Leia mais

Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP

Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP 1) Introdução Programação Orientada a Objetos é um paradigma de programação bastante antigo. Entretanto somente nos últimos anos foi aceito realmente

Leia mais

Programação com Objectos. Processamento de Dados I. 4. Classes Abstractas

Programação com Objectos. Processamento de Dados I. 4. Classes Abstractas Programação com Objectos Processamento de Dados I 4. Classes Abstractas 1 Conceito de classe abstracta Declaração de uma classe abstracta Implicações e características das classes abstractas Utilização

Leia mais

Herança. Algoritmos e Programação II. Aula 5 Herança

Herança. Algoritmos e Programação II. Aula 5 Herança Algoritmos e Programação II Aula 5 Herança *Adaptado do material do Prof. Júlio Machado Herança Uma característica importante da programação orientada a objetos é permitir a criação de novas classes com

Leia mais

Orientação a Objetos e a Linguagem Java

Orientação a Objetos e a Linguagem Java Orientação a Objetos e a Linguagem Java Afrânio Assis afranio@gmail.com Novembro/2006 1 Reutilizição com Herança e Composição Novembro/2006 2 Introdução Separar as partes que podem mudar das partes que

Leia mais

Capítulo 4. Packages e interfaces

Capítulo 4. Packages e interfaces Capítulo 4. Packages e interfaces 1/17 Índice Indice 4.1 - Package 4.2 - Interface 2/17 Índice 4.1 Package 4.1 - Package 4.2 -- Interface 3/17 4.1 Package Package ou pacote está para o Java como as directorias

Leia mais

Introdução. Programação. Orientada a Objetos: Reuso. Introdução. Classes Abstratas

Introdução. Programação. Orientada a Objetos: Reuso. Introdução. Classes Abstratas Introdução Programação Orientada a Objetos: Reuso Alexandre César Muniz de Oliveira Hierarquia de classes está associada a forma como se distribui conceitos (comportamentos) entre as unidades que compõem

Leia mais

Orientação a Objetos com Java

Orientação a Objetos com Java Orientação a Objetos com Java Julio Cesar Nardi julionardi@yahoo.com.br 2011/2 Apresentação 3: Orientação Objetos: Conceitos Básicos Objetivos: Compreender os Conceitos Básicos da Orientação a Objetos;

Leia mais

Tópicos da Aula. Classes e Objetos. Classe Pública em Java. Classes em Java. Assinatura de Métodos. Corpo de Classes e Métodos. Conceitos de classe

Tópicos da Aula. Classes e Objetos. Classe Pública em Java. Classes em Java. Assinatura de Métodos. Corpo de Classes e Métodos. Conceitos de classe DCC / ICEx / UFMG Tópicos da Aula Classes e Objetos Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Conceitos de classe Membros Construtores, métodos de classe e métodos de objeto, atributos de classe

Leia mais

Curso Adonai QUESTÕES Disciplina Linguagem JAVA

Curso Adonai QUESTÕES Disciplina Linguagem JAVA 1) Qual será o valor da string c, caso o programa rode com a seguinte linha de comando? > java Teste um dois tres public class Teste { public static void main(string[] args) { String a = args[0]; String

Leia mais

Programação Orientada a Objetos. Encapsulamento

Programação Orientada a Objetos. Encapsulamento Programação Orientada a Objetos Encapsulamento de Dados Ocultação de dados Garante a transparência de utilização dos componentes do software, facilitando: Entendimento Reuso Manutenção Minimiza as interdependências

Leia mais

Um objeto é uma instância de uma 'classe'. Você define uma classe utilizando o trecho de código abaixo;

Um objeto é uma instância de uma 'classe'. Você define uma classe utilizando o trecho de código abaixo; um objeto; é definido; Um objeto é uma instância de uma 'classe'. Você define uma classe utilizando o trecho de código abaixo; class ClasseBase{ é instanciado; $objetobase = new ClasseBase; Caso queira,

Leia mais

Prova de Java. 1) Copie o programa abaixo no eclipse e complete-o, utilizando os conceitos aprendidos durante o curso. (4 pontos)

Prova de Java. 1) Copie o programa abaixo no eclipse e complete-o, utilizando os conceitos aprendidos durante o curso. (4 pontos) Prova de Java 1) Copie o programa abaixo no eclipse e complete-o, utilizando os conceitos aprendidos durante o curso. (4 pontos) O programa consiste em uma aplicação que simula o comportamento de dois

Leia mais

Programação de Computadores - I. Profª Beatriz Profº Israel

Programação de Computadores - I. Profª Beatriz Profº Israel Programação de Computadores - I Profª Beatriz Profº Israel As 52 Palavras Reservadas O que são palavras reservadas São palavras que já existem na linguagem Java, e tem sua função já definida. NÃO podem

Leia mais

Revisão OO Básico. Orientação a Objetos em Java

Revisão OO Básico. Orientação a Objetos em Java Revisão OO Básico Orientação a Objetos em Java Grupo de Linguagens de Programação Departamento de Informática PUC-Rio Nomenclatura A unidade básica de programação em linguagens orientadas a objetos é a

Leia mais

Modulo IIa Extra: Object

Modulo IIa Extra: Object Modulo IIa Extra: Object Professor Ismael H F Santos ismael@tecgraf.puc-rio.br April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 1 Bibliografia Linguagem de Programação JAVA Ismael H. F. Santos,

Leia mais

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS Campus Cachoeiro de Itapemirim Curso Técnico em Informática Disciplina: Análise e Projeto de Sistemas Professor: Rafael Vargas Mesquita Este exercício deve ser manuscrito e entregue na próxima aula; Valor

Leia mais

Java Básico. Classes Abstratas, Exceções e Interfaces Prof. Fernando Vanini Ic-Unicamp

Java Básico. Classes Abstratas, Exceções e Interfaces Prof. Fernando Vanini Ic-Unicamp Java Básico Classes Abstratas, Exceções e Interfaces Prof. Fernando Vanini Ic-Unicamp Classes Abstratas construção de uma classe abstrata construção de classes derivadas Classes e Herança Uma classe define

Leia mais

Capítulo 3. Programação por objectos em Java

Capítulo 3. Programação por objectos em Java Capítulo 3. Programação por objectos em Java 1/46 Índice Indice 3.1 - Qualificadores de visualização 3.2 - Classe 3.3 - Objecto 3.4 - Métodos 3.5 - Herança 3.6 - Reescrita de métodos 3.7 - Classes abstractas

Leia mais

Programação Na Web. Linguagem Java Parte II. break com o nome do bloco. Sintaxe. Nome do bloco. Termina o bloco. António Gonçalves ...

Programação Na Web. Linguagem Java Parte II. break com o nome do bloco. Sintaxe. Nome do bloco. Termina o bloco. António Gonçalves ... Programação Na Web Linguagem Java Parte II Sintaxe António Gonçalves break com o nome do bloco Nome do bloco Termina o bloco class class Matrix Matrix { private private int[][] int[][] mat; mat; public

Leia mais

Herança e Polimorfismo de Inclusão

Herança e Polimorfismo de Inclusão Herança e Polimorfismo de Inclusão Sérgio Queiroz de Medeiros sergio@ufs.br 29 de maio de 2012 1 Polimorfismo Ad-hoc Coerção Sobrecarga (Overloading) Universal Paramétrico Inclusão 2 Herança Herança é

Leia mais

Programação aplicada de computadores Andréa Maria Pedrosa Valli

Programação aplicada de computadores Andréa Maria Pedrosa Valli Universidade Federal do Espírito Santo Laboratório de Computação de Alto Desempenho - LCAD Programação aplicada de computadores Andréa Maria Pedrosa Valli 1 Classes Parte 4 1. Herança 2. Classes básicas

Leia mais

Construção de novas Classes em Java. Classes Atributos Métodos Herança...

Construção de novas Classes em Java. Classes Atributos Métodos Herança... Construção de novas Classes em Java Classes Atributos Métodos Herança... 1 Exemplo Representação em UML Java (Unified Modeling Language) Stack items : Vector Stack( ) push( ) pop( ) isempty( ) finalize(

Leia mais

Comandos de repetição For (inicialização; condição de execução; incremento/decremento) { //Código }

Comandos de repetição For (inicialização; condição de execução; incremento/decremento) { //Código } Este documento tem o objetivo de demonstrar os comandos e sintaxes básicas da linguagem Java. 1. Alguns passos para criar programas em Java As primeiras coisas que devem ser abordadas para começar a desenvolver

Leia mais

Programação Orientada a Objetos (DPADF 0063)

Programação Orientada a Objetos (DPADF 0063) Programação Orientada a Objetos (DPADF 0063) Aula 5 Herança Universidade Federal de Santa Maria Colégio Agrícola de Frederico Westphalen Curso Superior de Tecnologia em Sistemas para Internet Prof. Bruno

Leia mais

Java. Marcio de Carvalho Victorino www.dominandoti.eng.br

Java. Marcio de Carvalho Victorino www.dominandoti.eng.br Java Marcio de Carvalho Victorino www.dominandoti.eng.br 3. Considere as instruções Java abaixo: int cont1 = 3; int cont2 = 2; int cont3 = 1; cont1 += cont3++; cont1 -= --cont2; cont3 = cont2++; Após a

Leia mais

Programação Orientada a Objetos e Java - Introdução. Carlos Lopes

Programação Orientada a Objetos e Java - Introdução. Carlos Lopes Programação Orientada a Objetos e Java - Introdução Carlos Lopes POO e Java Objetivo: proporcionar uma visão dos conceitos de POO e do seu uso na estruturação dos programas em Java. Classes e objetos em

Leia mais

Material de Apoio 5. int getres() { return res; O que estas classes possuem em comum? 1) 2) 3)

Material de Apoio 5. int getres() { return res; O que estas classes possuem em comum? 1) 2) 3) pg. 1/6 Material de Apoio 5 Herança Observe o código das classes Fatorial e Fibonacci apresentados abaixo. class Fatorial { class Fibonacci { private int n, res; private int n, res; public Fatorial( int

Leia mais

Programação com Acesso a BD. Programação com OO Acesso em Java

Programação com Acesso a BD. Programação com OO Acesso em Java Programação com OO Acesso em Java a BD Curso: Técnico em Informática Campus: Ipanguaçu José Maria Monteiro Pontifícia Universidade Católica do Rio de Janeiro PUC-Rio Departamento Clayton Maciel de Informática

Leia mais

Guia de Fatores de Qualidade de OO e Java

Guia de Fatores de Qualidade de OO e Java Qualiti Software Processes Guia de Fatores de Qualidade de OO e Java Versã o 1.0 Este documento só pode ser utilizado para fins educacionais, no Centro de Informática da Universidade Federal de Pernambuco.

Leia mais

Linguagem de Programação III

Linguagem de Programação III Linguagem de Programação III Aula-3 Criando Classes em Java Prof. Esbel Tomás Valero Orellana Da Aula Anterior Classes em Java, sintaxe básica Tipos básicos de dados em Java, como escolher o tipo apropriado

Leia mais

Análise de Programação

Análise de Programação Análise de Programação Conceitos Avançados da Linguagem de Programação Java Prof Gilberto B Oliveira Encapsulamento Proteger o dado dentro de uma classe (capsula segura) Facilita o uso da classe por outros

Leia mais

Capítulo 14. Herança a e Polimorfismo. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Capítulo 14. Herança a e Polimorfismo. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra Capítulo 14 Herança a e Polimorfismo Objetivos do Capítulo Apresentar os conceitos de herança e de polimorfismo. Explorar os diversos recursos disponíveis no Java para a aplicação da herança e do polimorfismo

Leia mais

Aula 2. Objetivos. Encapsulamento na linguagem Java; Utilizando a referência this.

Aula 2. Objetivos. Encapsulamento na linguagem Java; Utilizando a referência this. Aula 2 Objetivos Encapsulamento na linguagem Java; Utilizando a referência this. Encapsulamento, data hiding é um conceito bastante importante em orientação a objetos. É utilizado para restringir o acesso

Leia mais

Java Como Programar, 8/E. (C) 2010 Pearson Education, Inc. Todos os direitos reservados.

Java Como Programar, 8/E. (C) 2010 Pearson Education, Inc. Todos os direitos reservados. Java Como Programar, 8/E (C) 2010 Pearson Education, Inc. Todos os direitos reservados. Polimorfismo Permite programar no geral em vez de programar no específico. O polimorfismo permite escrever programas

Leia mais

AULA DE JAVA 1 - CONCEITOS BÁSICOS

AULA DE JAVA 1 - CONCEITOS BÁSICOS AULA DE JAVA 1 - CONCEITOS BÁSICOS DAS 5316 Integração de Sistemas Corporativos Roque Oliveira Bezerra, M. Eng roque@das.ufsc.br Prof. Ricardo J. Rabelo ROTEIRO Introdução Fases de um programa Java Strings

Leia mais

Paradigmas da Programação PPROG. Linguagem JAVA. Interfaces. (Livro Big Java, Late Objects Capítulo 9) Nelson Freire (ISEP DEI-PPROG 2013/14) 1/33

Paradigmas da Programação PPROG. Linguagem JAVA. Interfaces. (Livro Big Java, Late Objects Capítulo 9) Nelson Freire (ISEP DEI-PPROG 2013/14) 1/33 PPROG Paradigmas da Programação Linguagem JAVA Interfaces (Livro Big Java, Late Objects Capítulo 9) Nelson Freire (ISEP DEI-PPROG 2013/14) 1/33 PPROG Motivação para usar Interfaces Definição de Interface

Leia mais

Implementação de Classe e Auto-Relacionamento em Java

Implementação de Classe e Auto-Relacionamento em Java UTFPR DAELN - Disciplina de Fundamentos de Programação II ( IF62C ). 1 Implementação de Classe e Auto-Relacionamento em Java 1)Introdução Um modelo de Diagrama de Classes representa a estrutura definida

Leia mais

15-09-2009. Membros de classe e de instância. PARTE III: Java e OO - detalhes. Exemplo 1: método. Exercício. Exemplo 1 corrigido

15-09-2009. Membros de classe e de instância. PARTE III: Java e OO - detalhes. Exemplo 1: método. Exercício. Exemplo 1 corrigido PARTE III: Java e OO - detalhes Membros de classe e instâncias Pacotes Visibilidade Classes aninhadas Membros de classe e de instância De classe Static Método não necessita de objeto para ser chamado.

Leia mais

Sobre o Professor Dr. Sylvio Barbon Junior

Sobre o Professor Dr. Sylvio Barbon Junior 5COP088 Laboratório de Programação Aula 1 Java Prof. Dr. Sylvio Barbon Junior Sylvio Barbon Jr barbon@uel.br 1 Sobre o Professor Dr. Sylvio Barbon Junior Formação: Ciência e Engenharia da Computação (2005

Leia mais

Curso de Java. Orientação a objetos e a Linguagem JAVA. TodososdireitosreservadosKlais

Curso de Java. Orientação a objetos e a Linguagem JAVA. TodososdireitosreservadosKlais Curso de Java Orientação a objetos e a Linguagem JAVA Roteiro A linguagem Java e a máquina virtual Objetos e Classes Encapsulamento, Herança e Polimorfismo Primeiro Exemplo A Linguagem JAVA Principais

Leia mais

A Linguagem Java. Alberto Costa Neto DComp - UFS

A Linguagem Java. Alberto Costa Neto DComp - UFS A Linguagem Java Alberto Costa Neto DComp - UFS 1 Roteiro Comentários Variáveis Tipos Primitivos de Dados Casting Comandos de Entrada e Saída Operadores Constantes 2 Comentários /** Classe para impressão

Leia mais

Uma Introdução à Arquitetura CORBA. O Object Request Broker (ORB)

Uma Introdução à Arquitetura CORBA. O Object Request Broker (ORB) Uma Introdução à Arquitetura Francisco C. R. Reverbel 1 Copyright 1998-2006 Francisco Reverbel O Object Request Broker (ORB) Via de comunicação entre objetos (object bus), na arquitetura do OMG Definido

Leia mais

Aula 3 Objeto atual com referencia THIS e Classes com Herança

Aula 3 Objeto atual com referencia THIS e Classes com Herança Aula 3 Objeto atual com referencia THIS e Classes com Herança Profº Msc. Alexsandro M. Carneiro Engenharia de Computação Tec. Análise e Des. De Sistemas Tópicos Abordados Controlee de Acesso Herança Definição:

Leia mais

5 Caso de estudo O cartão fidelidade

5 Caso de estudo O cartão fidelidade 5 Caso de estudo O cartão fidelidade Cartão de fidelização de clientes das distribuidoras de combustível. Definição em JAVA da classe CartaoFidelidade, que deverá apresentar uma funcionalidade semelhante

Leia mais

PHP INTRODUÇÃO CLASSES E OBJETOS

PHP INTRODUÇÃO CLASSES E OBJETOS INTRODUÇÃO PHP AULA 8 ORIENTAÇÃO A OBJETOS Professor: Leonardo Pereira E-mail: leongamerti@gmail.com Facebook: leongamerti Material de Estudo: http://www.leonti.vv.si A orientação a objetos ou OO é o paradigma

Leia mais

FACULDADE PITÁGORAS DE UBERLÂNDIA PROGRAMAÇÃO ORIENTADA A OBJETOS EM JAVA LISTA DE EXERCÍCIOS (Compilação) Versão 2.0

FACULDADE PITÁGORAS DE UBERLÂNDIA PROGRAMAÇÃO ORIENTADA A OBJETOS EM JAVA LISTA DE EXERCÍCIOS (Compilação) Versão 2.0 1) Escreva uma classe Conta que contenha o nome do cliente, o numero da conta, o saldo e o limite.estes valores deverão ser informados no construtor, sendo que o limite não poderá ser maior que o valor

Leia mais

Revisão da linguagem Java

Revisão da linguagem Java Revisão da linguagem Java Laboratório de Programação Pedro Vasconcelos, DCC/FCUP Fevereiro 2015 Java TM linguagem de programação de propósito genérico desenvolvida pela Sun (e agora Oracle) suporta tipos

Leia mais

POO Programação Orientada a Objetos. Classes em Java

POO Programação Orientada a Objetos. Classes em Java + POO Programação Orientada a Objetos Classes em Java + Classes 2 Para que a JVM crie objetos: Ela precisa saber qual classe o objeto pertence Na classe estão definidos os atributos e métodos Programamos

Leia mais

Sintaxe Geral Tipos de Dados. Prof. Angelo Augusto Frozza, M.Sc.

Sintaxe Geral Tipos de Dados. Prof. Angelo Augusto Frozza, M.Sc. Sintaxe Geral Tipos de Dados Comentários Comentários: De linha: // comentário 1 // comentário 2 De bloco: /* linha 1 linha 2 linha n */ De documentação: /** linha1 * linha2 */ Programa Exemplo: ExemploComentario.java

Leia mais

Profº. Enrique Pimentel Leite de Oliveira

Profº. Enrique Pimentel Leite de Oliveira Profº. Enrique Pimentel Leite de Oliveira O termo orientação a objetos significa organizar o mundo real como uma coleção de objetos que incorporam estrutura de dados e um conjunto de operações que manipulam

Leia mais

Padrão Básico de Projeto: Interfaces e Polimorfismo

Padrão Básico de Projeto: Interfaces e Polimorfismo Padrão Básico de Projeto: Interfaces e Polimorfismo Herança de implementação versus herança de interface Há uma diferença grande entre uma classe e seu tipo A classe define ambos um tipo e uma implementação

Leia mais

UNIVERSIDADE FEDERAL DO PARANÁ

UNIVERSIDADE FEDERAL DO PARANÁ CURSO: Ciência da Computação DATA: / / 2013 PERÍODO: 4 o. PROFESSOR: Andrey DISCIPLINA: Técnicas Alternativas de Programação AULA: 05 APRESENTAÇÃO: Nesta aula vamos ver como se faz a criação de Métodos

Leia mais

INSTITUTO DE COMPUTAÇÃO UNICAMP 1o. SEMESTRE DE 2009. Profa. Cecília M. F. Rubira

INSTITUTO DE COMPUTAÇÃO UNICAMP 1o. SEMESTRE DE 2009. Profa. Cecília M. F. Rubira INSTITUTO DE COMPUTAÇÃO UNICAMP 1o. SEMESTRE DE 2009 Profa. Cecília M. F. Rubira Sala 13, cmrubira@ic.unicamp.br Versão: 1.1 Data: 22 de abril de 2009. Estudo de Caso: Sistema de Folha de Pagamento Este

Leia mais

Lição 9 Trabalhando com bibliotecas de classes

Lição 9 Trabalhando com bibliotecas de classes Lição 9 Trabalhando com bibliotecas de classes Introdução à Programação I 1 Objetivos Ao final da lição, o estudante deverá estar apto a: Explicar o que é programação orientada a objetos e alguns de seus

Leia mais

8 Classes Internas. Desenvolvimento OO com Java. Vítor E. Silva Souza (vitorsouza@inf.ufes.br) http://www.inf.ufes.

8 Classes Internas. Desenvolvimento OO com Java. Vítor E. Silva Souza (vitorsouza@inf.ufes.br) http://www.inf.ufes. Desenvolvimento OO com Java 8 Classes Internas Vítor E. Silva Souza (vitorsouza@inf.ufes.br) http://www.inf.ufes.br/ ~ vitorsouza Departamento de Informática Centro Tecnológico Universidade Federal do

Leia mais

Implementando uma Classe e Criando Objetos a partir dela

Implementando uma Classe e Criando Objetos a partir dela Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 04 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO) Parte: 2 Prof. Cristóvão Cunha Implementando uma Classe

Leia mais

PADI 2015/16. Aula 1 Introdução à Plataforma.NET

PADI 2015/16. Aula 1 Introdução à Plataforma.NET PADI 2015/16 Aula 1 Introdução à Plataforma.NET 1 Sumário 1. Framework.NET Arquitectura 2. Linguagem C# 2.0 Sintaxe C# vs. Java vs. C++ 3. IDE: MS Visual Studio 2005 ou superior Ferramentas Console/Win

Leia mais

4 Avaliação do Código Gerado

4 Avaliação do Código Gerado Referencial Teórico 4 Avaliação do Código Gerado Nós fizemos alguns exemplos para avaliar a eficiência da especificação proposta, tanto em termos de velocidade de execução quanto de diminuição do tamanho

Leia mais

Programação com Objectos. Processamento de Dados I. 3. UML (Unified Modeling Language)

Programação com Objectos. Processamento de Dados I. 3. UML (Unified Modeling Language) Programação com Objectos Processamento de Dados I 3. UML (Unified Modeling Language) 1 Modelo UML Diagrama de classes Programação com Objectos / Processamento de Dados I 2 Modelo O desenvolvimento de programas

Leia mais

Curso de PHP. FATEC - Jundiaí. A programação orientada a objetos (object-oriented oriented programming

Curso de PHP. FATEC - Jundiaí. A programação orientada a objetos (object-oriented oriented programming Curso de PHP FATEC - Jundiaí A programação orientada a objetos (object-oriented oriented programming OOP) é um conjunto de técnicas t para organizar o código c em torno de entidades ou objetos representados

Leia mais

Programação Orientada por Objetos

Programação Orientada por Objetos PPROG Paradigmas da Programação Programação Orientada por Objetos Relações entre Dependência Agregação Composição Associação (Livro Big Java, Late Objects Capítulo 12) Nelson Freire (ISEP DEI-PPROG 2014/15)

Leia mais

Programação por Objectos. Java

Programação por Objectos. Java Programação por Objectos Java Parte 3: Métodos LEEC@IST Java 1/45 Métodos (1) Sintaxe Qualif Tipo Ident ( [ TipoP IdentP [, TipoP IdentP]* ] ) { [ Variável_local Instrução ]* Qualif: qualificador (visibilidade,

Leia mais

Aula. Renata Pontin de Mattos Fortes 2006

Aula. Renata Pontin de Mattos Fortes 2006 Aula Herança Renata Pontin de Mattos Fortes renata@icmc.usp.br 2006 Herança técnica de projeto OO fundamental, usada para criar e organizar classes reutilizáveis 2 Roteiro Criando Subclasses Sobrescrevendo

Leia mais

public Agenda() { compromissos = null; } public int getnumerodecompromissos() { if (compromissos==null) return 0; else return compromissos.

public Agenda() { compromissos = null; } public int getnumerodecompromissos() { if (compromissos==null) return 0; else return compromissos. import java.util.scanner; class Data... class Compromisso... public class Agenda private Compromisso[] compromissos; private Compromisso[] realoquecompromissos (Compromisso[] vetor, int tamanhodesejado)

Leia mais

Unidade IV: Ponteiros, Referências e Arrays

Unidade IV: Ponteiros, Referências e Arrays Programação com OO Acesso em Java a BD Curso: Técnico em Informática Campus: Ipanguaçu José Maria Monteiro Pontifícia Universidade Católica do Rio de Janeiro PUC-Rio Departamento Clayton Maciel de Informática

Leia mais

2 Orientação a objetos na prática

2 Orientação a objetos na prática 2 Orientação a objetos na prática Aula 04 Sumário Capítulo 1 Introdução e conceitos básicos 1.4 Orientação a Objetos 1.4.1 Classe 1.4.2 Objetos 1.4.3 Métodos e atributos 1.4.4 Encapsulamento 1.4.5 Métodos

Leia mais

A Introdução à Programação Orientada a Objetos. Programação e Sistemas de Informação

A Introdução à Programação Orientada a Objetos. Programação e Sistemas de Informação A Introdução à Programação Orientada a Objetos Programação e Sistemas de Informação Objectos (1) Objectos são coisas que temos no mundo real e abstraímos no mundo virtual para que possamos manipulá-los

Leia mais

Programação Orientada a Objetos C ++ 4 Conceitos de OO em Java Classes e Objetos

Programação Orientada a Objetos C ++ 4 Conceitos de OO em Java Classes e Objetos Programação Orientada a Objetos C ++ 4 Conceitos de OO em Java Classes e Objetos Departamento de Informática Prof. Anselmo C. de Paiva Classes O conjunto de requisições que um objeto pode cumprir é determinado

Leia mais

3 Classes e instanciação de objectos (em Java)

3 Classes e instanciação de objectos (em Java) 3 Classes e instanciação de objectos (em Java) Suponhamos que queremos criar uma classe que especifique a estrutura e o comportamento de objectos do tipo Contador. As instâncias da classe Contador devem

Leia mais

Programação OO em Java. Profa Andréa Schwertner Charão DELC/CT/UFSM

Programação OO em Java. Profa Andréa Schwertner Charão DELC/CT/UFSM Programação OO em Java Profa Andréa Schwertner Charão DELC/CT/UFSM Sumário Classes abstratas Interfaces Tipos genéricos Coleções Classes abstratas São classes que não podem ser instanciadas, porque representam

Leia mais

Objetivos: Sun recomenda que utilize o nome de domínio da Internet da empresa, para garantir um nome de pacote único

Objetivos: Sun recomenda que utilize o nome de domínio da Internet da empresa, para garantir um nome de pacote único Pacotes e Encapsulamento Prof. Bruno Gomes bruno.gomes@ifrn.edu.br Programação Orientada a Objetos Introdução Permite o agrupamento de classes em uma coleção chamada pacote Um pacote é uma coleção de classes

Leia mais

Programação Orientada a Objetos (DPADF 0063)

Programação Orientada a Objetos (DPADF 0063) Programação Orientada a Objetos (DPADF 0063) Aula 6 Polimorfismo Universidade Federal de Santa Maria Colégio Agrícola de Frederico Westphalen Curso Superior de Tecnologia em Sistemas para Internet Prof.

Leia mais

Para desenvolver a atividade a atividade desta aula utilizaremos o ambiente de desenvolvimento integrado NetBeans.

Para desenvolver a atividade a atividade desta aula utilizaremos o ambiente de desenvolvimento integrado NetBeans. 1 - Criando uma classe em Java Para desenvolver a atividade a atividade desta aula utilizaremos o ambiente de desenvolvimento integrado NetBeans. Antes de criarmos a(s) classe(s) é necessário criar o projeto

Leia mais

insfcanceof new public switch transient while byte continue extends for int null

insfcanceof new public switch transient while byte continue extends for int null Palavras -chave de JAV A abstract catch do final implements long private static throw void boolean char double finally import native protected super throws volatile break class float insfcanceof new public

Leia mais

Programação orientada a objetos: Herança. 2005 Pearson Education do Brasil

Programação orientada a objetos: Herança. 2005 Pearson Education do Brasil 1 9 Programação orientada a objetos: Herança 2 OBJETIVOS Neste capítulo, você aprenderá: Como a herança promove a capacidade de reutilização de software. As noções de superclasses e subclasses. Como utilizar

Leia mais

Módulo 02 Programação Orientada a Objetos. Última atualização: 07/06/2010

Módulo 02 Programação Orientada a Objetos. Última atualização: 07/06/2010 Módulo 02 Programação Orientada a Objetos Última atualização: 07/06/2010 1 Objetivos Definir conceitos de orientação a objetos: o abstração, encapsulamento, pacotes. Discutir reutilização de código em

Leia mais

Universidade Federal de Itajubá Instituto de Engenharia de Sistemas e Tecnologias da Informação-IESTI PCO203 Tópicos Especiais em Programação

Universidade Federal de Itajubá Instituto de Engenharia de Sistemas e Tecnologias da Informação-IESTI PCO203 Tópicos Especiais em Programação UNIFEI Disciplina Professor Universidade Federal de Itajubá Instituto de Engenharia de Sistemas e Tecnologias da Informação-IESTI PCO203 Tópicos Especiais em Programação Enzo Seraphim 1 Padrões de Operação

Leia mais

Introdução à orientação a objetos. João Tito Almeida Vianna 25/05/2013

Introdução à orientação a objetos. João Tito Almeida Vianna 25/05/2013 Introdução à orientação a objetos João Tito Almeida Vianna 25/05/2013 Roteiro Aula 2 Motivação Revisão dos conceitos da aula 1 Preparação para os exercícios Exercícios propostos 2 Motivação A orientação

Leia mais