Dyskusja:Interfejs (programowanie obiektowe)

message: Interfejs – w [[obiektowy język programowania|obiektowych]] [[język programowania|językach programowania]] [[C Sharp|C#]] i [[Java]] specjalna konstrukcja ([[typ (informatyka)|typ]]) podobna do [[klasa (programowanie obiektowe)|klasy]] (dokładniej do [[klasa abstrakcyjna|klasy abstrakcyjnej]]), która posiada jedynie deklaracje [[metoda (programowanie obiektowe)|metod]] bez podawania ich implementacji. Interfejs służy jedynie temu, aby klasy mogły go implementować, a więc podawać implementacje wszystkich jego metod. Zaletą interfejsów jest to, że o ile klasa może [[dziedziczenie (programowanie obiektowe)|dziedziczyć]] tylko po jednej klasie, to może implementować dowolnie wiele interfejsów.
=====Przykład=====
 interface Figura {    // deklaracje interfejsu
   double pole();      // deklaracja metody interfejsu
 }
 
 class Kolo implements Figura {   // implementacja interfejsu 
   private double promien;
   Kolo( double promien ) {
     this.promien = promien;
   }
   
   public double pole() {
     return 3.14 * promien * promien;
   }
 }
 
 class Kwadrat implements Figura {   // implementacja interfejsu 
   private double bok;
   Kwadrat( double bok ) {
     this.bok = bok;
   }
   
   public double pole() {
     return bok * bok;
   }
 }
 
 public class Program {
   public static double obliczPole( Figura obj ){
     return obj.pole();
   }
   
   public static void main( String[] args ) {
     // Figura f = new Figura(); // niemożliwe: Figura jest interfejsem
     Kolo ko = new Kolo( 2 );
     Kwadrat kw = new Kwadrat( 2 );
     System.out.println( obliczPole( ko ) );
     System.out.println( obliczPole( kw ) );
   }
 }
[[en:Interface (Java)]]
====Zobacz też====
*[[Klasa (programowanie obiektowe)]]
thread_title: Wycięte z [[interfejs (Java)]]

message: Uważam, że artykuł jest kompletnie niezrozumiały. Dzięki słowom kończącym się na -cja (implementacja, hermetyzacja) nie staje się mądrzejszy.
replies: text: Po pierwsze: do czego służy interfejs? Jakie mam z niego korzyści?

text: Po drugie: co to znaczy, że interfejs jest abstrakcyjną reprezentacją klasy? Czy to znaczy, że jest to deklaracja klasy, ale bez opisu wewnętrznych metod? Po co robić takie coś?

text: Po trzecie: Może jakiś przykład?
Pozdrawiam
w.
thread_title:  Kompletnie niezrozumiały artykuł 

message: Cały fragment jest praktycznie nie na temat, a jego kluczowy fragment Jeśli w klasie abstrakcyjnej definiowane będą kolejne metody to może dojść do sytuacji, kiedy wszystkie ze zdefiniowanych metod klasy są metodami wirtualnymi - wówczas mamy już do czynienia z interfejsem jest zupełnie błędny. royas (dyskusja) 03:25, 29 maj 2012 (CEST)
replies: text: Sam miałem poważne wątpliwości co do poprawności i związku z tematem w tym fragmencie, ale ostatecznie to zostawiłem, nie będąc w 100% pewnym. Cieszę się, że nie byłem odosobniony, dlatego teraz potwierdzam zdanie royasa. Interfejs to nie to samo, co klasa abstrakcyjna, w której wszystkie metody są wirtualne, choć technicznie może się w niektórych językach do tego sprowadzać. --Zyx (dyskusja) 17:52, 29 maj 2012 (CEST)
thread_title:  Usunięty i przywrócony fragment o klasach abstrakcyjnych