IT történet – februárban történt

IT történet blog bejegyzés sorozatunkban válogatunk a februárban történt események közül – bármikortól napjainkig. A főbb témakörök: IT általában, számítástudomány, hardver, szoftver, platform, szoftverfejlesztés, játékprogramok, híres informatikusok, kibernetikusok, feltalálók, IT hírek, technológiai mérföldkövek. Természetesen nem törekedhetünk a teljességre, pusztán érdekességeket említünk röviden, tömören, amit illik tudni a szakterület iránt érdeklődőknek.


1995. február 1-jén, 26 éve történt:
Megalakul a kanadai BioWare játékfejlesztő vállalat. Népszerű szerepjátékokat, 3D-s játékokat készítenek, például: a Dragon Age és a Mass effect.


1966. február 3-án, 55 éve történt:
A Luna-9 szovjet holdautomata első űreszközként, sima leszállást hajtott végre egy idegen égitesten. A Hold felszínéről elkészítette az első helyszíni panorámafelvételeket.


2004. február 4-én, 17 éve történt:
Elindult a Facebook amerikai alapítású közösségi hálózat. Eredetileg Thefacebook-nak hívták. Mark Zuckerberg alapította iskolatársaival együtt.


1946. február 6-án, 75 éve történt:
Bay Zoltán és csoportja saját fejlesztésű radarberendezéssel kimutatta a Holdra sugárzott rádióhullámok visszaverődését az égitest felszínéről. A kutatók érdeme a jelösszegzés eljárásának (long-time integration) kifejlesztése és gyakorlati alkalmazása.


1957. február 8-án, 64 éve történt:
Elhunyt Neumann János magyar születésű matematikus. Kvantummechanikai elméleti kutatásai mellett a digitális számítógép elvi alapjainak lefektetésével vált ismertté.


2005. február 8-án, 16 éve történt:
Megjelent a Google Térkép (Google Maps). A Google által fejlesztett ingyenes internetes térképszolgáltatásban elérhető térképek és műholdfelvételek az egész Földet lefedik.


1980. február 13-án, 41 éve történt:
Megalapítják az Apollo Computer nevű vállalatot, amely egészen 1987-ig a hálózati munkaállomások legnagyobb gyártója volt. 1989-ben felvásárolta a HP.


1962. február 14-én, 59 éve történt:
Megjelent a Spacewar!, amely a MIT-n, az egyetem PDP-1 típusú számítógépén működött. Ez volt az első videójáték.


1953. február 16-án, 68 éve történt:
Megszületett Roberta Williams, a világ első női játékfejlesztője és dizájnere. Munkássága a Sierra Entertainment céghez kötődik, ahol elkészült az első grafikus kalandjáték.


1991. február 20-án, 30 éve történt:
Megjelent a Python – interpreteres, objektumorientált, általános célú – programozási nyelv.


1455. február 23-án, 566 éve történt:
Johannes Gutenberg német feltaláló – a mozgatható betűelemekkel való könyvnyomtatás atyja – nyomtatni kezdte az emberiség első nyomtatott könyvét, a Bibliát.


1955. február 24-én, 66 éve történt:
Megszületett Steven Paul „Steve” Jobs, amerikai feltaláló és üzletember. Irányítása alatt fejlesztette ki az Apple Computer a cég népszerű termékeit: Macintosh számítógép, iPod médialejátszó, iPhone okostelefon, iPad táblagép.


1997. február 28-án, 24 éve történt:
Megjelent a Grand Theft Auto videójáték, amelyet a Rockstar North (akkori nevén DMA Design) és a Tarantula Studios fejlesztett. Ez volt a népszerű franshise első része.


1860. február 29-én, 161 éve történt:
Megszületett Herman Hollerith német származású amerikai statisztikus, feltaláló, üzletember, aki lyukkártya-feldolgozó gépet fejlesztett és szabadalmaztatott.


2012. február 29-én, 9 éve történt:
Forgalomba került a Raspberry Pi, bankkártya méretű, egyetlen áramköri lapra/kártyára integrált BCM2835 alapú egykártyás számítógép, amelyet az Egyesült Királyságban fejlesztettek oktatási célokra.


IT történet – januárban történt

IT történet blog bejegyzés sorozatunkban válogatunk a januárban történt események közül – bármikortól napjainkig. A főbb témakörök: IT általában, számítástudomány, hardver, szoftver, platform, szoftverfejlesztés, játékprogramok, híres informatikusok, kibernetikusok, feltalálók, IT hírek, technológiai mérföldkövek. Természetesen nem törekedhetünk a teljességre, pusztán érdekességeket említünk röviden, tömören, amit illik tudni a szakterület iránt érdeklődőknek.


1939. január 1-jén, 82 éve történt:
Bill Hewlett és Dave Packard megalapította az amerikai Hewlett-Packard Company (HP) IT vállalatot, amely a PC-iről és nyomtatóiról lett világhírű.


1979. január 2-án, 42 éve történt:
Dan Bricklin és Bob Frankston megalapítja az amerikai Software Arts nevű vállalkozást. Elkezdték a VisiCalc nevű számítógépes program fejlesztését, amely az első mikroszámítógépekre kifejlesztett táblázatkezelő volt.


1977. január 3-án, 44 éve történt:
A Steve Jobs, Steve Wozniak és Ronald Wayne által alapított Apple Inc. bejegyzett részvénytársaság lett.


1983. január 3-án, 38 éve történt:
A Time magazin a személyi számítógépet választotta ‘Az év emberévé’. Az 1927 óta minden évben kiosztott cím történetében először fordult elő, hogy nem embernek ítélték oda.


2009. január 3-án, 12 éve történt:
Egy ismeretlen (fórumos nevén Satoshi Nakamoto) kibocsátotta a Bitcoin nyílt forráskódú digitális fizetőeszközt. Ez volt az első kriptovaluta. Az elnevezés vonatkozik a nyílt forráskódú szoftverrel létrehozott elosztott hálózatra is.


1972. január 4-én, 49 éve történt:
A Hewlett Packard vállalat bemutatta az első tudományos célú zsebszámológépet, a HP-35-öt. Az eszköz később óriási siker lett.


1995. január 5-én, 26 éve történt:
Bill Gates bemutatta a Microsoft Bob nevű, Windows 3.1-re és Windows 95-re szánt grafikus felületet. Ez a vállalat egyik legnagyobb bukásának bizonyult. Több szaklap is beválogatta minden idők legrosszabb szoftverei közé.


2000. január 6-án, 21 éve történt:
A San Francisco-i MacWorld Expo-n az Apple Inc. bemutatta a Mac OS X operációs rendszert.


1943. január 7-én, 78 éve történt:
Elhunyt Nikola Tesla, aki a világ egyik legjelentősebb és leghíresebb, szerb származású tudósa és feltalálója volt, tevékenységét elsősorban az elektromosság, mágnesség és gépészet területén fejtette ki.


1982. január 7-én, 39 éve történt:
A Consumer Electronics Show (CES) alkalmával a Commodore Business Machines amerikai, elektronikai cég bemutatta a Commondore 64-et, amely az 1980-as évek kultikus személyi számítógép-típusa volt.


1889. január 8-án, 132 éve történt:
Herman Hollerith német származású amerikai statisztikus, feltaláló, üzletember megkapta a szabadalmat az általa kifejlesztett lyukkártya-feldolgozó gépre, amivel néhány hónap alatt feldolgozta az 1890-es amerikai népszámlálás adatait.


2007. január 9-én, 14 éve történt:
Az Apple Inc. bejelentette az iPhone-t, amely az iPhone-széria első okostelefonja volt.


1946. január 10-én, 75 éve történt:
Megtörtént az első sikeres visszhangfelismerés az amerikai hadsereg Diana kísérleti projektjében, amelynek célja volt a Holdról visszavert radarjelek fogadása. Ez volt az első radarcsillagászati kísérlet egy másik égitest vizsgálatára.


1934. január 11-én, 87 éve történt:
Megszületett Tony Hoare, teljes nevén Sir Charles Antony Richard Hoare. A Turing-díjas, tudományos és oktatási tevékenységéért lorddá avatott brit számítógéptudós nevéhez fűződik a Quicksort (gyorsrendezés) algoritmus.


1968. január 12-én, 53 éve történt:
Az AT&T amerikai telekommunikációs vállalat bejelentette, hogy a 911-es számot egyetemes segélyhívó számként jelölte meg.


2020. január 14-én, tavaly történt:
A Microsoft Corporation megszüntette a Windows 7 kiterjesztett támogatását, hogy újabb technológiák és nagyszerű, új szolgáltatások támogatására tudja összpontosítani befektetéseit.


2001. január 15-én, 20 éve történt:
Elindult a Wikipédia projekt angol nyelvű változata. Ez minden idők legnagyobb, szabadon szerkeszthető internetes enciklopédikus gyűjteménye. 2020-ban már 6 millió szócikket tartalmazott. 2002-től a Wikipédia napja.


1986. január 19-én, 35 éve történt:
Megjelent az első IBM PC-re írott rezidens, flopin terjedő bootvírus, a Brain. Szerzői azért hozták létre, hogy büntessék az illegális szoftvermásolást.


1999. január 19-én, 22 éve történt:
A Research in Motion (RIM) szoftverfejlesztéssel és IoT technológiával foglalkozó kanadai cég megjelentette a BlackBerry terméksorozat első eszközét. Ez a BlackBerry 850 hordozható, valósidőben e-mailt küldő/fogadó személyhívó volt.


1999. január 20-án, 22 éve történt:
Először jelent meg a Happy99 féreg, amely az első e-mailben terjedő számítógépvírus volt.


1959. január 21-én, 62 éve történt:
Az Esti Hírlap beszámolt az első magyar elektronikus számítógép (korabeli szóhasználattal: ‘számológép’), az M-3 elkészültéről. Ez a magyar informatika születésnapja.


1984. január 22-én, 37 éve történt:
A XVIII. Super Bowl harmadik negyedében bemutatták az azóta kultikussá vált Apple Inc. ‘1984’ televíziós reklámjának nevezett, amely útjára indította a Macintosh személyi számítógépet.


1996. január 23-án, 25 éve történt:
A Sun Microsystems félvezetőket, számítógépeket, szoftvereket gyártó amerikai cég kiadta a Java fejlesztői környezet első változatát Oak néven (Java Development Kit 1.0).


1984. január 24-én, 37 éve történt:
Apple Inc. bemutatta második személyi számítógépét, a Macintosh-t, amelynek Mac OS nevű grafikus felhasználói felületű operációs rendszere volt.


1926. január 26-án, 95 éve történt:
Londonban bemutatták az első, hagyományos katódsugárcsöves képernyővel rendelkező, működőképes televíziót.


2010. január 27-én, 11 éve történt:
Steve Jobs, az Apple Inc. alapító-vezérigazgatója a San Franciscó-i Yerba Buena Arts Centerben bemutatta a cég új termékét, az iPad táblagépet.


2007. január 28-án, 14 éve történt:
Az adatvédelem nemzetközi napja. Az Európa Tanács (ET) kezdeményezésére 2007-ben, az ET adatvédelmi konvenciója elfogadásának 25. évfordulóján rendezték meg először az Európai Bizottság támogatásával.


1925. január 30-án, 96 éve történt:
Megszületett Douglas Engelbart amerikai feltaláló, aki 1963-ban megalkotta a számítógépes beviteli eszközt. Ez lett a PC korszakban az egér.


2007. január 30-án, 14 éve történt:
A Microsoft Corporation piacra dobja a Windows Vista operációs rendszerét és az Office 2007 irodai programcsomagot is.


1956. január 31-én, 65 éve történt:
Megszületett Guido van Rossum holland programozó, a Python programozási nyelv megalkotója.


1997. január 31-én, 24 éve történt:
A Sony Computer Entertainment (SIE) japán multinacionális videójáték- és digitális szórakoztató-ipari vállalat megjelentette a Final Fantasy VII videószerepjátékot PlayStation-re. A szériában ez volt az első játék, amely 3D-s technológiákat használt.


Fibonacci-spirál

Fibonacci logó

Fibonacci logóA Fibonacci-spirál a népszerű Fibonacci-sorozat elemei által meghatározott oldalhosszúságú négyzetekbe rajzolt maximális sugarú negyedkörök megfelelően összeillesztett darabjaiból/sorozatából áll. Sokszor hasonlítják az arany spirálhoz (jól közelíti), amely az aranymetszéshez kötődik.

A Fibonacci-spirál

Vegyük a Fibonacci-sorozat első 10 elemét! Rajzoljuk egymás mellé az alábbi elrendezésben belülről kifelé haladva az 1, 1, 2, 3, 5, 8, 13, 21, 34, 55 oldalhosszúságú négyzeteket (az alábbi ábrán vékony sárgával jelölve). Piros színnel rajzoljuk bele a négyzetekbe a négyzet oldalhosszával megegyező sugarú negyedköröket. A negyedkörök megfelelő elrendezésben folytonos görbét alkotnak, és ezt nevezzük Fibonacci-spirálnak (az alábbi ábrán vastag pirossal jelölve).

Fibonacci-spirál 1

A rajzolás bármeddig folytatható, mert a sorozat végtelen, a négyzetek illeszkednek és az ábra rekurzív, önhasonló. Az alábbi animáció mutatja, hogyan alakul a spirál a nézőpont közelítésével. A viselkedés távolítás során is azonos lenne.

Fibonacci-spirál 2

Korábban blogoltunk már a Fibonacci napról, amelyet minden évben november 23-án ünneplünk. A sorozat első néhány eleméből összeáll a 11.23. és értelmezhető dátumként. Most nem a sorozat elemeinek előállítására fókuszálunk, hanem arra, hogy ezekből felépítsük a Fibonacci-spirált.

Készítsünk Java programot!

Grafikus felületű Java programot készítünk, amely 21 animációs fázisban mutatja be a Fibonacci-sorozat első 10 eleméből álló Fibonacci-spirál felépítését. A rajzolás fázisai:

  • Az 1. fázis a kiindulópontként tekinthető fehér, üres rajzlap. A rajzlap fekvő, mérete 890*550 pixel, amelyre éppen elfér a 10 negyedkörből álló spirál.
  • A 2-11. fázisban megfelelő pozícióba/koordinátákra kerülnek fel az ábra vázát alkotó négyzetek, belülről kifelé haladva. A négyzetek oldalainak hosszúsága a sorozat elemeinek megfelelő. A szomszédos négyzetek különböző színekkel kitöltöttek és mindegyikben megjelenik a sorozat megfelelő eleme.
  • A 12-21. fázisban – szintén belülről kifelé haladva – a négyzetek törlődnek és helyükre a spirált alkotó negyedkörök kerülnek fekete színnel. A 21. fázist tekintjük végeredménynek.

A fázisok kézzel, nyilakkal jelölt (Első, Előző, Következő, Utolsó) vezérlő nyomógombokkal megjeleníthetők, illetve egyben, időzítve animációként is lejátszható a rajzolási folyamat. Az elkészült program működése megfigyelhető az ábrán:

Fibonacci-spirál Java program

A bejegyzéshez tartozó teljes forráskódot ILIAS e-learning tananyagban tesszük elérhetővé tanfolyamaink résztvevői számára.

A Java SE szoftverfejlesztő tanfolyamunkon, a szakmai modul Objektumorientált programozás témakörét követő 29-36. óra Grafikus felhasználói felület alkalmain már tudunk egyszerűbb szimulációs programot tervezni, kódolni, tesztelni.

Népesedési világnap

Népesedési világnap logó

Népesedési világnap logóAz ENSZ 1987-ben július 11-ét a népesedési világnappá (World Population Day) nyilvánította. Bolygónk lakossága aznap érte el az 5 milliárdot. További kerek számok voltak: 1999. október 12-én 6 milliárd, 2011. október 30-án 7 milliárd. További kerek számok várhatóak: 2023 – 8 milliárd, 2037 – 9 milliárd, 2057 – 10 milliárd. A KSH elemzése részletes elemzéseket közöl évről-évre a témában, például: 2019-ben, 2018-ban. A worldometer.info weboldalon folyamatosan frissülő kimutatások érhetők el a népességhez globálisan, valamint országonként is: például Magyarország aktuális népesedési adatai.

A népesedési világnap inspirált egy Java program megtervezésére és megírására. A swing GUI-s program megjeleníti a worldometer.info weboldalról kinyerhető adatok alapján régiónként (kontinensenként) az elérhető adatokat 1950-től 2020-ig az alábbiak szerint egy világtérképen.

Az elkészült program

Népesedési világnap Java program

Tervezés

Objektumorientált szemlélettel, MVC architekturális tervezési mintát követünk, angol nyelvű interfész, osztály, változó, objektum, metódus nevekkel. A projekt neve: WorldPopulation, a csomag neve: worldpopulation. Amit lehet, konstansként interfészbe (szeparálva) teszünk és az MVC rétegekhez kötődő osztályok implementálják. A modell minden évszámhoz tárolja a szükséges adatokat, mindezt egyetlen betöltéssel/letöltéssel éri el. A program kliensként hat régióra vonatkozó adatot gyűjt össze, alkalmazkodva a szerver adatforráshoz. A címsorban lévő összesített adat is elérhető közvetlenül a weboldalon, de a kisebb adatforgalom érdekében hasznos inkább a kliensben összesíteni. Mindössze egyetlen eseménykezelés szükséges: a csúszka beállításával megadott évszám alapján frissíteni kell a régiók címkéit és az ablak címsorát. Öröklődés hasznos a feladat megoldása során: egyrészt interfészek, másrészt osztályok között.

Interfészek

Az ősinterfész a WorldPopulationConstants, benne az évszám intervallum MIN_YEAR és MAX_YEAR határaival, valamint a megjeleníthető régiók neveivel tömbben: REGION_NAME_ARRAY. Két utódinterfész épül az ősre: ModelConstants és ViewConstants. Előbbi interfész az adatforráshoz kapcsolódik: URL_COMMON az URL eleje, URL_ARRAY az URL végei régiónként tömbben. Utóbbi interfész a megjelenítéshez kapcsolódik: WORLD_MAP_IMAGE a háttérkép annak WORLD_MAP_RECT méretével együtt, valamint a régiónkénti REGION_RECT_ARRAY téglalapok tömbje a kezdeti pozíciókkal/méretekkel, TITLE a sablon a program címsorához (frissítendő az évszámmal és az összesített népességgel). A megfelelő utódinterfészt mindig implementálja az MVC szerint hozzá illeszkedő osztály.

Osztályok

A belépési pont a WorldPopulation.java fájlban található.

Három összetartozó elemi adatot fog össze egybe a RegionData POJO, ezek name, year, population nevű rendre String, int, long típusú adatok. Például: Európa, 2020, 747643253. Tartalmaz két függvényt: getPopulation(), valamint toString(). Utóbbi HTML formátumban adja vissza a megjelenítendő adatokat.

A JLabel-ből származik az igényekhez alakított RegionLabel osztály. Ennek van előre megadott pozíciója, mérete, betűtípusa, betűmérete, sárga háttérszíne, piros kerete. Ezenkívül a téglalap átlátszó, valamint a benne megjelenő HTML tartalom vízszintesen középre igazított. Némi extra funkció, hogy egérrel megfogva – drag and drop – áthelyezhető, ami a MouseMotionListener egérmozgást figyelő interfész mouseDragged() metódusának felülírásával válik lehetővé. A mozgathatóságáért saját maga felel. Példaként közöljük az osztály teljes forráskódját:

A webről adatokat szerez és tárolja a Model osztály, a java.io és java.net csomagokra építve. Egy példa: a https://www.worldometers.info/world-population/europe-population/ oldal forrásából nyeri ki az osztály az alábbi adatokat:

Ezek parszolását követően elkészül egy optimálisnak tekinthető, generikus listákból álló regionListArray tömb adatszerkezet. A parszolás történhet egyszerű szövegkezeléssel vagy JSON feldolgozással is. Erre épülnek a konstruktorral és vezérlővel összehangoltan működő getter metódusok: getHTML(), getRegionList(), getRegionData(), getPopulation(). A JSON adatforrás feldolgozását most nem részletezzük, de hasonlóról blogoltunk már: Időjárás Budapesten.

A grafikus felhasználói felületet adja a JFrame utód View osztály. Három GUI komponensből áll: pnWorldMap – háttérkép JPanel, lbYear – kiválasztott/aktuális év JLabel, slYear – kiválasztható/görgethető aktuális év JSlider. Izgalmas megoldani egymásra/egymáson elhelyezni a komponenseket. Egy JLayeredPane komponens  DEFAULT_LAYER rétegére kerül a térképet tartalmazó háttérkép, majd a  PALETTE_LAYER rétegére kerül dinamikusan a hat  RegionLabel osztályú/típusú objektum. A csúszka komponens slYearStateChanged() eseménykezelő metódusa vezérlőként megszólítja a modell réteget és a visszakapott adatokkal frissíti a nézet réteget (a címsorban lévő összesítéssel együtt, ezres szeparátorokkal).

Ötlet továbbfejlesztésre

Hat különböző weboldal forráskódjából kell összegyűjteni a megjelenítendő adatokat. Ez 2020-ban régiónként 71 számot jelent és hat régió van. Érdemes lehet olyan adattárolást megvalósítani, amely csökkenti a szerverhez fordulások számát, illetve a letöltendő adatok mennyiségét. Hiszen a múltbeli évekhez kötődő historikus adatok nem változnak. Ha ezekre valamilyen formában a program emlékszik, akkor elegendő az utolsó tárolt évből kiindulva az aktuális évig évenként, régiónként lekérni mindössze 6, 12, 18… számot, a program utolsó futtatásának évéből kiindulva. Ez lényegesen kevesebb lenne, mint a jelenlegi 6*71 lekért szám. A koncepció kulcsszava: inkrementális adatfrissítés. Ha megvalósítjuk az ötletet, akkor figyelni kell arra, hogy az aktuális/utolsó évben az adatok akár másodpercenként is változhatnak.

A bejegyzéshez tartozó teljes forráskódot ILIAS e-learning tananyagban tesszük elérhetővé tanfolyamaink résztvevői számára.

A feladat a Java SE szoftverfejlesztő tanfolyam tematikájához kötődik (ha a swing GUI-ra koncentrálunk és az adatok helyi fájlrendszerből elérhetők), és a Java EE szoftverfejlesztő tanfolyam tematikájához kapcsolódik (ha az adatokat közvetlenül a webről olvassuk).

Dátumtartományok kezelése

dátumintervallumok logó

dátumintervallumok logóAki webáruházat üzemeltet és raktároz, befektet áruk raktározásába, biztosan folyamatosan követi a raktárkészlet (és egyúttal pénzügyei) alakulását különböző lekérdezésekkel. Aki online marketinggel foglalkozik, szintén mérheti/követheti/összevetheti egy-egy reklámkampány eszközeinek (Facebook hirdetés, Google Ads hirdetés, e-mail marketing, Instagram hirdetés, blog) eredményességét, hatékonyságát. Az adatok elemzése mindenképpen része a tervezésnek és folyamatosnak/periodikusnak kell lennie.

Tipikus felmerülő kérdések/problémák

  • Hány offline és/vagy online vásárlás/tranzakció volt eddig az aktuális hónapban?
  • Hogyan változott a raktárkészlet az előző hónapban? Miből kell utánrendelni? Mik a kifutó termékek?
  • A bevétel milyen arányban érkezett offline vagy online vásárlásból az aktuális hónapban?
  • Kik vásároltak az előző negyedévben nyomtatót? Küldjünk nekik e-mailt arról, most 10%-kal olcsóbban rendelhetnek tonert, ha kettőt vesznek!
  • Milyen értékben adtak le rendelést a webáruházban két adott dátum által megadott napon? Például hogyan alakult az utóbbi két Black Friday? Esetleg GLAMOUR-napok, húsvét, hosszú hétvége…
  • Kik azok a rendszeres visszatérő vásárlóink, akik nem vásároltak az előző hónapban?
  • Hogyan alakultak „a számok” az előző két év 3. negyedévében!

Egy webáruház raktárkészletének és számláinak nyilvántartása biztosan adatbázisban tárolódik, így könnyen megfogalmazható SQL lekérdező parancsok segíthetik a fenti kérdésekre/problémákra való válaszadást. Természetesen ezeket a műveleteket okosan ki kell vezetni a felhasználói felületre, hogy könnyen paraméterezhetők legyenek.

Lássunk néhány megoldást! A Java forráskódokból azokat a részeket mutatjuk be, amelyek egy lekérdező parancsba beágyazható dátumokra vonatkozó feltételeket kiírják. A dátumok megjelenítésére rövid formátumot használunk konstansként: SimpleDateFormat SHORT_DATE=new SimpleDateFormat("yyyy-MM-dd");.

Aktuális hónap

Érdemes készíteni két túlterhelt metódust. A paraméter nélküli változat az aktuális napot, a paraméteres változat a megadott napot tekinti maximálisnak és ehhez adja meg az adott hónap első/minimális napját. A két dátumnál az év és hónap megegyezik, a nap többnyire különbözik (ritkán megegyezik). A maxDate nem lehet jövőbeli és teljesül a minDate<=maxDate feltétel.

Előző hónap

Itt is érdemes készíteni két túlterhelt metódust. A paraméter nélküli változat az aktuális napot, a paraméteres változat a megadott napot tekinti kiinduló napnak, és ehhez adja meg az előző hónap első és utolsó napját. A két dátumnál az év és hónap megegyezik, a nap mindig különbözik. Mindkét dátum múltbeli és teljesül a minDate<maxDate feltétel. A megvalósítás kezeli az eltérő hosszúságú hónapokat és a szökőévet is. Ha a kiinduló dátum az adott év első hónapjába esik, akkor az előző hónap az előző év utolsó hónapja (ez most automatikusan teljesül, külön nem kell rá figyelni). Hasznos a dátumobjektum add() metódusa, ami az első paraméterében megadott dátummező alapján a második paraméterében megadott értékkel tudja változtatni a dátumot.

Előző negyedév

Itt is hasznos lehet a két túlterhelt metódus. A paraméter nélküli változat az aktuális napot, a paraméteres változat a megadott napot tekinti kiinduló napnak, és ehhez adja meg az előző negyedév első hónapjának első napját és az előző negyedév utolsó hónapjának utolsó napját. A két dátumnál az év megegyezik, a hónap és a nap mindig különbözik. Mindkét dátum múltbeli és teljesül a minDate<maxDate feltétel. A megvalósítás kezeli az eltérő hosszúságú hónapokat. A szökőév most nem számít. Ha a kiinduló dátum az adott év első negyedévébe esik, akkor az előző negyedév az előző év utolsó negyedéve (erre most külön figyelni kell). A negyedév ( quarter) képletén látszik, hogy épít arra, hogy a dátumobjektumtól elkért hónap ( month) 0 bázisú.

Eredmény

dátumintervallumok eredmény

A bejegyzéshez tartozó teljes forráskódot ILIAS e-learning tananyagban tesszük elérhetővé tanfolyamaink résztvevői számára.

A feladat a Java SE szoftverfejlesztő tanfolyam 21-24. óra: Objektumorientált programozás, 2. rész kapcsolódik alapvetően, de a két visszakapott dátum használható több programozási tétellel (kiválogatás, szétválogatás) tömbbel, lambda kifejezésekkel kollekciókkal, SQL lekérdező parancsban adatbázis-kezeléshez kötődően.