Esittely latautuu. Ole hyvä ja odota

Esittely latautuu. Ole hyvä ja odota

Olio-ohjelmointi Olio-ohjelmoinnissa keskeisiä käsitteitä ovat luokka ja olio. Olio on abstraktio jostakin ongelma- tai ratkaisualueen käsitteestä. Oliolla.

Samankaltaiset esitykset


Esitys aiheesta: "Olio-ohjelmointi Olio-ohjelmoinnissa keskeisiä käsitteitä ovat luokka ja olio. Olio on abstraktio jostakin ongelma- tai ratkaisualueen käsitteestä. Oliolla."— Esityksen transkriptio:

1 Olio-ohjelmointi Olio-ohjelmoinnissa keskeisiä käsitteitä ovat luokka ja olio. Olio on abstraktio jostakin ongelma- tai ratkaisualueen käsitteestä. Oliolla on identiteetti (identity), joka erottaa sen kaikista muista olioista. Oliolla on tila (state), joka muodostuu olion tietojäsenten (data member, attribute) arvoista. Olio-ohjelmointi tMyn

2 Oliolla on käyttäytyminen (behaviour), joka määrää miten olio toimii ja reagoi tilamuutoksiin ja vuorovaikuttaa muiden olioiden kanssa vastineena saamiinsa palvelupyyntöihin. Olion rajapinta (interface) koostuu jäsenfunktioista (member function, method). Luokka on keskenään samankaltaisten olioiden - samat tietojäsenet, yhteydet ja palvelut sekä semantiikka eli merkitys - määrittely. Luokka määrittelee ne yhteiset ominaisuudet, jotka kaikilla sen jäsenillä, ilmentymillä, on. Olio-ohjelmointi tMyn

3 Pelkistäminen (abstraction) on yksi kompleksisuuden hallinnan perusmenetelmistä.
Pelkistäminen on kulloisenkin tarkastelukulman kannalta oleellisen korostamista ja epäoleellisen unohtamista. Wikipedia: In computer science, abstraction is a mechanism and practice to reduce and factor out details so that one can focus on a few concepts at a time. Olio-ohjelmointi tMyn

4 Kapselointi (encapsulation) kätkee ja suojaa yksityisen sisäisen rakenteen ja toteutuksen paljastamalla muulle järjestelmälle ainoastaan julkisen liittymän. Kaikki kommunikointi tapahtuu ainoastaan julkisen liittymän kautta (jäsenfunktiot). Olio-ohjelmointi tMyn

5 Wikipedia: The term encapsulation is often used interchangeably with information hiding, while some make distinctions between the two. It seems that people, however, fail to agree on the distinctions between information hiding and encapsulation though one can think of information hiding as being the principle and encapsulation being the technique. A software module hides information by encapsulating the information into a module or other construct which presents an interface. Olio-ohjelmointi tMyn

6 Kapseloinnin perusidea, kuva 1.
Kapselointi on pelkistämistä täydentävä mekanismi: kun pelkistäminen keskittyy tarkasteltavan olion ulospäin näkyvään käyttäytymiseen, keskittyy kapselointi sen sisäiseen toteutukseen. Kapselointi suojaa tietyllä abstraktiotasolla olevat asiat alempien abstraktiotasojen toteutuksen yksityiskohdilta. Pelkistäminen ja kapselointi yhdessä merkitsevät, että jokaisella luokalla on kaksi osaa: rajapinta (interface) ja toteutus (implementation). Kapseloinnin perusidea, kuva 1. Olio-ohjelmointi tMyn

7 Lainatili-luokka Olion tietojäsenet (data members)
tase korkoprosentti laskekorko() Olion tietojäsenet (data members) määräävät olion tilan. Jokaisella luokan Lainatili oliolla on kaksi tietojäsentä ja yksi jäsenfunktio. Olion jäsenfunktiot (member functions) kertovat sen, mitä oliolla voi tehdä. Kuva 1. Kapselointi on ohjelmointitekniikka, joka määrää sekä ohjelmien modularisoinnin että tietojen ja toteutustavan piilotuksen periaatteet. Olio-ohjelmointi tMyn

8 Tiedon piilotuksen perusteet, kuva 2.
Tiedon piilotuksella (data hiding) tarkoitetaan sitä, että luokassa määriteltyjä tietoja voi käsitellä vain kyseisessä luokassa määritellyillä jäsenfunktioilla. Olion tietojäseniä voi katsella tai muuttaa niiden arvoja vain olion jäsenfunktioiden kautta. Tämä on tärkeätä, koska näin varmistetaan olion eheys olio-ohjelmoinnin filosofia (= ei mahdollisuutta käsitellä olion tietojäseniä muuten kuin julkisen liittymän kautta) Tiedon piilotuksen perusteet, kuva 2. Olio-ohjelmointi tMyn

9 Lainatili-luokka Olion tietojäseniä ei tulisi voida käsitellä
ulkoa päin tase korkoprosentti Olion tietojäsenet tulisi olla piilotettuja. Jäsenfunktio tarjoaa mahdollisuuden katsella tai muuttaa tietojäsenen arvoa. Olion jäsenfunktio tarjoaa hallitun tavan käsitellä tietojäseniä. laskeKorko() Kuva 2. Tiedon piilottaminen edesauttaa olion eheyden säilyttämisessä. Olio-ohjelmointi tMyn

10 Wikipedia: In computer science, the principle of information hiding is the hiding of design decisions in a computer program that are most likely to change, thus protecting other parts of the program from change if the design decision is changed. Protecting a design decision involves providing a stable interface which shields the remainder of the program from the implementation (the details that are most likely to change). In modern programming languages, the principle of information hiding manifests itself in a number of ways, including encapsulation (given the separation of concerns) and polymorphism. Olio-ohjelmointi tMyn

11 Erikoistunut luokka saa sisältää vain lisää tietoa, ei vähempää.
Yleistys (generalisation/specialization) on suhde yleisen ja erikoistuneen luokan välillä. Erikoistunut luokka saa sisältää vain lisää tietoa, ei vähempää. Erikoistuneen luokan ilmentymää voidaan käyttää koska tahansa silloin kun yleisempi luokka kelpaa. Erikoisempi luokka, jota kutsutaan johdetuksi luokaksi (subclass, derived class), perii (inherit, inheritance) yleiseltä luokalta eli kantaluokalta (superclass, base class) kaikki sen ominaisuudet. Yleistys kuvataan yhtenäisellä viivalla luokkien välillä, jonka kantaluokan puoleisessa päässä on ontto kolmio, kuva 3. Olio-ohjelmointi tMyn

12 Moottori siirrytään(d: suunta, s:nopeus) pysähdytään() annetaanStatus() Ohjausmoottori Päämoottori Kuva 3. Johdetut luokat perivät kaikki kantaluokan tietojäsenet ja jäsenfunktiot. Olio-ohjelmointi tMyn

13 Wikipedia: Inheritance is a way to form new classes using classes that have already been defined. The new classes, known as derived classes, take over (or inherit) attributes and behaviour of the pre-existing classes, which are referred to as base classes. It is intended to help reuse of existing code with little or no modification. Olio-ohjelmointi tMyn

14 Inheritance is also sometimes called generalization, because the is-a relationships represent a hierarchy between classes of objects. For instance, a "fruit" is a generalization of "apple", "orange", "mango" and many others. One can consider fruit to be an abstraction of apple, orange, etc. Conversely, since apples are fruit (i.e. an apple is-a fruit), apples may naturally inherit all the properties common to all fruit, such as being a fleshy container for the seed of a plant. Olio-ohjelmointi tMyn

15 One common reason to use inheritance is to create specializations of existing classes. In specialization, the new class has data or behavior aspects that are not part of the inherited class. For example, a "Bank Account" class might have data for an "account number", "owner", and "balance". An "Interest Bearing Account" class might inherit "Bank Account" and then add data for "interest rate" and "interest accrued" along with behavior for calculating interest earned. Olio-ohjelmointi tMyn

16 Abstrakti luokka on luokka, jolla ei voi olla olioita.
Abstraktia luokkaa voidaan vain periä, sillä abstrakti luokka esittelee yhteisiä tietojäseniä ja jäsenfunktioita muille luokille. Yleistykselle määritelty rajoitus (constraint) antaa lisätietoa yleistyksen jatkokäytöstä. Seuraavat rajoitukset on määritelty valmiiksi yleistyksille, joihin liittyy useampi kuin yksi johdettu luokka: päällekkäinen (overlapping) erillinen (disjoint) täydellinen (complete) epätäydellinen (incomplete) Olio-ohjelmointi tMyn

17 Monimuotoisuus (polymorphism) tarkoittaa eri olioiden kykyä vastata samaan viestiin eri tuloksella.
Monimuotoisuutta hyväksi käytettäessä olion käyttäytymistavan määrää olion määrittelyluokkaan toteutettu jäsenfunktio. Olio-ohjelmointi tMyn

18 Wikipedia: Polymorphism is the ability of objects belonging to different types (classes) to respond to method calls (member function calls) of methods of the same name, each one according to an appropriate type-specific behaviour. The programmer (and the program) does not have to know the exact type of the object in advance, so this behavior can be implemented at run time (this is called late binding or dynamic binding). Olio-ohjelmointi tMyn

19 In practical terms, polymorphism means that if class B inherits from class A, it doesn’t have to inherit everything about class A; it can do some of the things that class A does differently. This means that the same member function can result in different actions as appropriate for a specific class. Olio-ohjelmointi tMyn


Lataa ppt "Olio-ohjelmointi Olio-ohjelmoinnissa keskeisiä käsitteitä ovat luokka ja olio. Olio on abstraktio jostakin ongelma- tai ratkaisualueen käsitteestä. Oliolla."

Samankaltaiset esitykset


Iklan oleh Google