AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Objektorientiertes Programmieren

Ein Thema von DelphiKevin · begonnen am 11. Apr 2019 · letzter Beitrag vom 11. Apr 2019
Antwort Antwort
DelphiKevin

Registriert seit: 30. Okt 2018
3 Beiträge
 
Delphi 7 Personal
 
#1

Objektorientiertes Programmieren

  Alt 11. Apr 2019, 18:58
Hallo Liebe Delphi-Praxis Mitglieder!

Ich bin in der 11. Klasse und habe folgendes Problem. Ich schreibe bald eine Klausur in Informatik und unter anderem ist das Thema: Objektorientiertes Programmieren. In der Woche, in der wir dies besprochen habe lag ich leider krank im Bett. Nun habe ich folgende Übungsaufgabe, wozu mir eine Lösung helfen würde. (Aufgabe im Anhang)


Gegeben ist also ein Rechteck.
zu a) Was muss genau in den private Bereich und was in den public Bereich?

wie programmiere ich die angegebenen Methoden denn?


von b) habe ich leider auch nur Ansätze.


Ihr müsst wissen, dass ich Informatik erst seit diesem Schuljahr habe und es als 2 stündiges Fach in der Woche leider sehr schwer zu verstehen für mich ist.


Ich freue mich für jede Hilfe von Euch!
Lösungen würden mir dann denke ich das Lernen und Verstehen erleichtern

Liebe Grüße!
Miniaturansicht angehängter Grafiken
infooop.jpeg  
  Mit Zitat antworten Zitat
Klaus01
Online

Registriert seit: 30. Nov 2005
Ort: München
5.753 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Objektorientiertes Programmieren

  Alt 11. Apr 2019, 19:39
Hallo,

steht doch schon mehr oder weniger in der Aufgabe drin.

Erstellen Sie einen Konstruktor "create" mit 4 Parametern die im private Bereich gespeichert werden.

Höhe, Breite, etc. sind dann public weill ja von aussen darauf zugegriffen werden soll.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.809 Beiträge
 
Delphi 12 Athens
 
#3

AW: Objektorientiertes Programmieren

  Alt 11. Apr 2019, 19:41
Hallo,

also deine Aufgabe werden wir dir nicht direkt lösen, sonst lernst du nicht genügend, aber wir geben dir gerne ein paar "Stupser" in die richtige Richtung.

1. Dein Rechteck sollte sicher als Klasse umgesetzt werden.
Beispielhaftes Grundgerüst:

Delphi-Quellcode:
type
  TRechteck = class(TObject)
  private
  public
  end;
2. Überlege mal, was du wissen müsstest, wenn du dieses Rechteck wärst um komplett definiert zu sein.
Richtig! Die X und Y Koordinaten von 2 diagonalen Ecken des Rechtecks. Diese muss dein Rechteck speichern können.

Frage an dich: wo gehören die entsprechenden Felder hin? In public oder in private?
Wenn die in der private Sektion eingebaut werden, dann kann nur dein Rechteck darauf zugreifen und
jemand anderes von Außen (ein benutzer deines Rechtecks) kann diese nicht durcheinander bringen.
Wäre das sinnvoll? Also, wo rein mit denen? private oder public?

Man könnte die Punkte dann z.B. so umsetzen:

x1, y1: Integer;
x2, y2: Integer;

3. Wie kommt das Rechteck zu seinen koordinaten?
Falls ihr Konstruktoren schon durchgenommen habt wäre ein Constructor wie dieser hier
eine Möglichkeit:

  constructor Create(px1, py1, px2, py2: Integer); und die Umsetzung des Constructors sähe beispielsweise so aus:

Delphi-Quellcode:
  constructor TRechteck.Create(px1, py1, px2, py2: Integer);
  begin
    inherited Create; // Constructor der Klasse aufrufen, von der man erbt,
                      // evtl. will die nämlich auch schon etwas initialisieren
    x1 := px1;
    y1 := py1;
    x2 := px2;
    y2 := py2;
  end;
4. Für die erste Aufgabe zum Ermitteln der Breite bräuchtest du eine Methode.
Ich schreibe mal nur ein Grundgerüst dazu hin, den Rest musst du selber ausfüllen, damit du noch etwas dabei lernst.
Die Methode muss zuerst im public Bereich deiner Klasse definiert werden, damit Nutzer deines Rechtecks diese auch
aufrufen können. Das sähe so aus:

Delphi-Quellcode:
function breite: Integer; // ermittelt die Breite des rechtecks und liefert diese als Integer Wert zurück,
                          // man kann hier debatieren ob ein vorzeichenloser Datentyp hier besser wäre, z.B. UInt16
Dann musst du die Methode im implementation Teil der Unit wie folgt umsetzen:

Delphi-Quellcode:
function TRechteck.breite:Integer;
begin
  result := // hier müsste jetzt deine Breitenberechnung hin, versuche mal selber drauf zu kommen
end;
5. Du hast dann hoffentlich auch schon erkannt, dass die Höhenberechnung analog zur
Breitenberechnung/Rückgabe erfolgt.

6. Auch die Fläche sollte dir keine ernsthaften Probleme mehr bereiten. Tipp:
die Fläche kannst du einfach durch Multiplizieren der Rückgaben deiner inzwischen
geschriebenen breite und hoehe Methoden ausrechnen. Es hindert dich ja keiner
Daran die in der eigenen Klasse aufzurufen.

7. Was die pruefe Methode tun soll, hab' ich noch nicht ganz verstanden. Ich hoffe aber,
dass ihr schon den boolean Datentyp durchgenommen habt. Falls ja würde die in die public
Sektion gehörende pruefe Methode so aussehen:

function pruefe:Boolean; Und die Ausprogrammierung vermutlich so ähnlich:

Delphi-Quellcode:
function TRechteck.pruefe:Boolean;
begin
  // an die Profis hier: ja, das kann man auch besser schreiben, aber dann würde er
  // vermutlich ganz verwirrt. Daher ruhig mal zuerst auf die "platte" Weise umsetzen
  if (von dir auszufüllen) then
    result := true
  else
    result := false;
end;
So, jetzt hab' ich dir hoffentlich ein paar Ideen vermittelt. Ggf. nochmal zu den Details
hier im Thread nachfragen, dann aber bitte mal deine angefangene Unit mit posten, damit wir
sehen wo du gerade stehst.
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.680 Beiträge
 
Delphi 5 Professional
 
#4

AW: Objektorientiertes Programmieren

  Alt 11. Apr 2019, 19:42
Sei dir bewusst, dass es hier im Forum keine vollständige Lösung von Hausaufgaben gibt, lediglich Hilfe zur Selbsthilfe. Insofern wäre es gut (gewesen), wenn du deine bisherigen Erkenntnisse und Code gleich mitgeteilt hättest.

Nichtsdestotrotz versuche ich mal, dir zu helfen. In den private -Bereich einer Klasse kommen alle Felder (Datentypen) und Methoden, die von außen nicht zugreifbar sein sollen/dürfen, eben Privatsache der Klasse sind. In den public -Bereich kommt alles, was von außen sichtbar und zugreifbar sein muss. Zu letzterem gehört der Konstruktor. Von außen bedeutet z.B. von einer anderen Klasse bzw. von einem Objekt einer anderen Klasse aus.

Die Deklaration könnte so aussehen:
Delphi-Quellcode:
interface

type
  TRechteck = class
  private
    FPunktA: TPoint;
    FPunktB: TPoint;
  public
    constructor Create(A1, A2, B1, B2: integer);
    function breite: integer;
    function hoehe: integer;
    function flaeche: integer;
    function pruefe: boolean;
  end;
Statt TPoint, das bereits eine Zusammenfassung aus X und Y darstellt, könnte man auch zwei getrennte Variablen (A1/A2 und B1/B2) benutzen.

Grüße
Dalai
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz