Web - Amazon

We provide Linux to the World


We support WINRAR [What is this] - [Download .exe file(s) for Windows]

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
SITEMAP
Audiobooks by Valerio Di Stefano: Single Download - Complete Download [TAR] [WIM] [ZIP] [RAR] - Alphabetical Download  [TAR] [WIM] [ZIP] [RAR] - Download Instructions

Make a donation: IBAN: IT36M0708677020000000008016 - BIC/SWIFT:  ICRAITRRU60 - VALERIO DI STEFANO or
Privacy Policy Cookie Policy Terms and Conditions
Abstrakcja (programowanie) - Wikipedia, wolna encyklopedia

Abstrakcja (programowanie)

Z Wikipedii

Abstrakcją w programowaniu nazywamy pewnego rodzaju uproszczenie rozpatrywanego problemu, polegające na ograniczeniu zakresu cech manipulowanych obiektów wyłącznie do cech kluczowych dla algorytmu, a jednocześnie niezależnych od implementacji. W tym sensie abstrakcja jest odmianą formalizmu matematycznego. Cel stosowania abstrakcji jest dwojaki: ułatwienie rozwiązania problemu i zwiększenie jego ogólności.

Języki programowania (w szczególności języki obiektowe) mogą oferować specjalne narzędzia do tworzenia pewnych typów abstrakcji, jednak pojęcie to nie zależy w żaden sposób od konkretnego języka. Każde uogólnienie problemu mające na celu wyizolowanie jego kluczowych aspektów jest abstrakcją.

Dla przykładu, dany program komputerowy może przetwarzać różne zbiory obiektów, jednak wszystkie one mają wspólną cechę - w pewnych warunkach można je traktować jako listę o następujących operacjach: pierwszy(), ostatni() i następny() oraz predykacie czy_ostatni(). Dlatego dla potrzeb fragmentów zajmujących się przetwarzaniem list, wygodnie jest wprowadzić abstrakcję iteratora, który będzie udostępniał te właśnie operacje. W języku Java deklaracja interfejsu realizującego tę abstrakcję mogłaby wyglądać następująco:

public interface IterListy 
{
    public void pierwszy();
    public void ostatni();
    public void następny();
    public boolean czy_ostatni();
}

// ...

public void przetwarzaj_listę(IterListy iter_listy)
{
    while (! iter_listy.czy_ostatni())
    {
        // zrób coś
        iter_listy.następny();
    }
}

Dla porównania, w języku Python żadna formalna deklaracja nie jest potrzebna, kod przetwarzający listy po prostu odwołuje się do odpowiednich metod obiektu:

def przetwarzaj_listę(iter_listy):
    while not iter_listy.czy_ostatni():
        # zrób coś
        iter_listy.następny()

W rzeczywistości, w Pythonie abstrakcja iteratora jest wbudowana w język, wobec czego powyższy fragment można przepisać jako:

def przetwarzaj_listę(lista):
   for obiekt in lista:
      # zrób coś

Pętla for użyta w tym fragmencie doskonale ilustruje użyteczność abstrakcji - ponieważ całkowicie pomijamy jakiekolwiek charakterystyczne cechy przetwarzanych kolekcji obiektów, for może z równym powodzeniem obsługiwać każdą z nich, pod warunkiem jedynie że dany typ implementuje odpowiedni zbiór operacji. Dzięki temu for stosować można do list, słowników, krotek, zbiorów itd. Jednocześnie unikamy angażowania się w szczegóły implementacji nieistotne dla rozwiązywanego problemu, tj. przeglądania kolekcji obiektów.

[edytuj] Inne użycia

Termin abstrakcja bywa również używany w informatyce na określenie pokrewnej, jednak nie tożsamej techniki ukrywania implementacji za wspólnym interfejsem, który może korzystać z wielu różnych bibliotek do osiągnięcia pożądanej funkcjonalności. W tym sensie można mówić o abstrakcji bazy danych, mając na myśli kod który dostosowuje interfejs danej bazy danych do wspólnej postaci oczekiwanej przez program.

W praktyce, wiele popularnych bibliotek, w szczególności biblioteki standardowe i biblioteki ułatwiające pisanie przenośnych programów to biblioteki użytecznych abstrakcji, zarówno w pierwszym jak i drugim znaczeniu tego słowa.

Our "Network":

Project Gutenberg
https://gutenberg.classicistranieri.com

Encyclopaedia Britannica 1911
https://encyclopaediabritannica.classicistranieri.com

Librivox Audiobooks
https://librivox.classicistranieri.com

Linux Distributions
https://old.classicistranieri.com

Magnatune (MP3 Music)
https://magnatune.classicistranieri.com

Static Wikipedia (June 2008)
https://wikipedia.classicistranieri.com

Static Wikipedia (March 2008)
https://wikipedia2007.classicistranieri.com/mar2008/

Static Wikipedia (2007)
https://wikipedia2007.classicistranieri.com

Static Wikipedia (2006)
https://wikipedia2006.classicistranieri.com

Liber Liber
https://liberliber.classicistranieri.com

ZIM Files for Kiwix
https://zim.classicistranieri.com


Other Websites:

Bach - Goldberg Variations
https://www.goldbergvariations.org

Lazarillo de Tormes
https://www.lazarillodetormes.org

Madame Bovary
https://www.madamebovary.org

Il Fu Mattia Pascal
https://www.mattiapascal.it

The Voice in the Desert
https://www.thevoiceinthedesert.org

Confessione d'un amore fascista
https://www.amorefascista.it

Malinverno
https://www.malinverno.org

Debito formativo
https://www.debitoformativo.it

Adina Spire
https://www.adinaspire.com