Ohjelmointi 1, syksy 2024, luento16

# L16

16. luento: ti 22.10.2024 klo 14:15-16:00: Oliot


# vb1

Muu sisältö: listat, silmukat, muuttujien näkyvyys, hiiren kuuntelu (Jypeli)


# git

Luentoesimerkkien haku versionhallinnasta

  • siirry hakemistoon johon haluat esimerkit

  • ekalla kertaa

    git clone https://gitlab.jyu.fi/tie/ohj1/2024s/esimerkit.git .

    jatkossa samassa hakemistossa

    git pull
  • kopsi tuo hakemisto tai ainakin sinua kiinnostava alihakemisto toiseen paikkaan

  • periaatteessa tuonne syntyneen solutionin voi avata sellaisenaankin, mutta jos siihen tekee muutoksia, niin seuraavalla pull-komennolla tulee helposti konflikti

Tiedotusasiaa

Muuttujien näkyvyys

# nakyvyys

Luokat ja perintä

# kielista

Esimerkkejä kielistä

Huom, lista ei ole täydellinen, siitä puuttuu paljon tunnettuja kieliä, kun jaon tekeminen ei ole selkeää. Tunnetuimpia esim Lisp-pohjaiset.

Luokkapohjainen:

  • Java
  • C#
  • C++ (tosin rakenteista ohjelmointia voi tehdä ilmankin luokkia)
  • Kotlin (paljon myös funktionaalisen kielen piirteitä, tosin monessa muussakin)
  • Swift
  • Delphi (Pascalin käytetyin "oliolaajennus")
  • Python
  • TypeScript (tosin voi kirjoittaa myös suoraan JavaScriptiäkin ja silloin menee tuonne proton puolelle)
  • Smalltalk

Prototyyppipohjainen:

  • JavaScript

Funktonaaliset:

  • Haskell
  • F#

HangryDog

Minimaalinen Vector-luokka

# pisteetesim

Elaimet

  • Elaimet.cs - pohjaksi Kissa ja Koira-luokka
# Elaimet
# kissattarkka
# kissattarkka2
# kissatnorm

Seuraavissa kuvissa ei ole ihan koko totuus. Esimerkiksi C#:issa mikä tahansa luokka periytyy Object-luokasta ja tarkkaan ottaen ToString on jo siellä.

# uml2
Kissa-nimi: string-paino: double+ToString(): string+Aantele(): voidKoira-nimi: string-paino: double+ToString(): string+Aantele(): void

Perimällä ei tarvitse toistaa niin paljon asioita (UML-kuva):

# uml3
Elain-nimi: string-paino: double+ToString(): string+Aantele(): voidKissa+Aantele(): voidKoira+Aantele(): void
# uml4
# ElaimetPerimalla

Eläimet Jypeliin

# Luokat
# HangyDoc
# shell

These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.