Docsity
Docsity

Przygotuj się do egzaminów
Przygotuj się do egzaminów

Studiuj dzięki licznym zasobom udostępnionym na Docsity


Otrzymaj punkty, aby pobrać
Otrzymaj punkty, aby pobrać

Zdobywaj punkty, pomagając innym studentom lub wykup je w ramach planu Premium


Informacje i wskazówki
Informacje i wskazówki

Metodyki programowania obiektowego: DRY, Geneza i Podstawowe Pojęcia, Publikacje z Programowanie obiektowe

zachowanie (działanie), przez definicje metod i właściwości. • Klasa jest typem dla obiektu, a obiekt danej klasy to jej instancja ...

Typologia: Publikacje

2022/2023

Załadowany 24.02.2023

Klara_86
Klara_86 🇵🇱

5

(1)

112 dokumenty

Podgląd częściowego tekstu

Pobierz Metodyki programowania obiektowego: DRY, Geneza i Podstawowe Pojęcia i więcej Publikacje w PDF z Programowanie obiektowe tylko na Docsity!

Podstawy programowania

Programowanie obiektowe

Metodyki programowania Istnieją trzy główne metodyki programowania:

  • Programowanie strukturalne• Programowanie proceduralne• Programowanie obiektowe

Zastosowanie "wyższych" metodyk programowania wiąże sięzawsze z dodatkowym nakładem pracy, jednak przynosi znacznekorzyści – przy bardziej złożonych programach ten nakład pracybardzo szybko się zwraca

DRY DRY (ang. don't repeat yourself)

  • Dodatkowa korzyść z programowania proceduralnego oraz

obiektowego to możliwość wielokrotnego użycia kodu.

  • Postulat DRY (A. Hunt, D. Thomas) zaleca unikanie powtórzeń kodu

(np. przez Ctrl-C, Ctrl-V), do czego właśnie służą wyższe metodyki:fragment kodu można "zamknąć" w postaci oddzielnej funkcji lub klasyi odwołać się do niego, zamiast go kopiować.

  • Co ważne, DRY zmniejsza też liczbę błędów (zatem redukuje czas

potrzebny na ich poprawianie) – jeżeli funkcja zawiera błędy, to trzebaje poprawić tylko w jednym miejscu, zaś raz opracowana i pozbawionabłędów funkcja już zawsze będzie działać poprawnie

  • DRY ułatwia również utrzymanie kodu – jeżeli jakiś aspekt programu

trzeba ulepszyć (np. zastosować szybszy algorytm), to wystarczy tozrobić w jednym miejscu

DRY DRY (ang. don't repeat yourself)

  • …• Skrajne podejście DRY widać np. w języku Java, gdzie zaleca się

stosowanie zasady jeden plik = jedna klasa (publiczna)– w ten sposób każda klasa może łatwo być użyta wielokrotnie

  • Postulat DRY dotyczy też innych aspektów programowania,

np. użycia narzędzi programistycznych, kompilacji warunkowej,szablonów klas, a nawet definiowania stałych (1. W ilu miejscachtrzeba zmienić kod, jeżeli węzłów będzie 5 zamiast 4; 2. Które "4" wkodzie oznacza liczbę węzłów, a które coś zupełnie innego)

const Int

NumberNodes

=

4;

Node[]

Nodes

=

new

Node[NumberofNodes];

for

(Int

n

=

0;

n

<

NumberOfNodes;

n++)

Nodes[n].Open();

Pojęcie klasy Jeżeli przyjąć, że program komputerowy służy do rozwiązaniajakiegoś problemu, to klasa jest modelem elementu jego dziedziny.

  • Definicja klasy obejmuje

stan

obiektu (wartości jego pól) oraz

zachowanie

(działanie), przez definicje metod i właściwości

  • Klasa jest typem dla obiektu, a obiekt danej klasy to jej

instancja

Definicja klasy Definicja klasy:

[

<[>

Atrybuty<]>

]

[

]

class

[

:

<Klasa-bazowa>

]

{

//

elementy

składowe

klasy

}

  • Atrybuty, np. [Serializable] – metadane, dołączane przez kompilator do

kodu klasy; wg MS stanowią odpowiednik słów kluczowych (jak np.modyfikatory dostępu private/public), ale dowolnie definiowanych;Mogą być wykorzystane na różne sposoby – np. mogą stanowićwytyczne dla kompilatora JIT, mogą dodawać pewne funkcjonalności

  • Modyfikatory – dostępu (np. private/public), związane z dziedziczeniem

(abstract, sealed) oraz modyfikator static

  • Klasa bazowa – klasa, po której aktualnie definiowana klasa dziedziczy

wszystkie elementy składowe; Domyślnie klasa object (System.Object)

Definicja klasy Modyfikatory dostępu

internal

(domyślnie!) – klasa jest dostępna tylko w obrębie tego

samego pakietu (assembly = plik .dll lub .exe)

public

  • klasa jest dostępna z dowolnego zestawu .NET
    • protected – tylko klasy zagnieżdżone wewnątrz innej klasy – klasa jest

dostępna tylko dla klasy zawierającej i jej klas potomnych

  • private – tylko klasy zagnieżdżone wewnątrz innej klasy – klasa jest

dostępna tylko dla klasy zawierającej

Pozostałe modyfikatory

static

  • klasa zawiera wyłącznie metody statyczne, nie można

utworzyć obiektu takiej klasy

  • abstract – klasa zawierająca metody abstrakcyjne; nie można utworzyć

obiektu takiej klasy, ale można zdefiniować jej klasy potomne

  • sealed – nie może być przedmiotem dziedziczenia

Definicja klasy Nazwa - zasady nieformalne:

  • Klasy, pola, metody, stałe – konwencja Pacal,

nazwy klas i pól – rzeczowniki, metod – czasowniki:

DaneWykresu

(klasa

  • należy

unikać nazw

na

"I")

KolorLinii (pole)ZapiszDane (metoda)

  • Interfejsy – Pascal poprzedzone literą "I"

ISortable

  • Nazwy powinny być znaczące:

p,

k,

poleKoła,

kolorLinii

Kod powinien być czytelny, kiedy do niego zajrzeć po kilku miesiącachalbo dla innego programisty (tzw. samodokumentujący się)

CTS Wspólny system typów CTS (Common Type System)

Typy wartościowe

Struktury

Typy referencyjne

Klasa Interfejs Tablica

Typy wyliczeniowe

Typy proste

Obiekt

Definicja klasy Elementy składowe klasy

  • Stała – niezmienna wartość (niemodyfikowalna zmienna);

Należy do klasy, nie do obiektów, podobnie jak metody statyczne

Pole

  • zmienna należąca do obiektu, część stanu obiektu;

Zwykle pola są prywatne (dostępne wyłącznie dla metod obiektu)

Właściwość

  • sposób udostępnienia stanu obiektu (prywatnego pola)

w kontrolowany sposób

Metoda

  • funkcja związana z klasą, określająca działania, jakie może

wykonać obiekt klasy (nie dotyczy metod statycznych)

Konstruktor

  • metoda wykonywana w trakcie tworzenia obiektu
    • Destruktor – metoda wykonywana w trakcie "niszczenia" obiektu• Operator – definicja działania operatora (np. +, *, &&, …)• Zdarzenie – mechanizm informowania innych obiektów np. o zmianie

stanu; w praktyce zmienna typu delegacji

  • Typ – zagnieżdżona definicja typu – klasy, interfejsu, delegacji, …

Definicja klasy Pola

  • Pola są zmiennymi należącym do obiektów lub klasy i reprezentują ich

wewnętrzny stan; Z zasady powinny być prywatne, natomiast doudostępniania stanu obiektu powinny służyć właściwości

Modyfikatory

  • static – pole statyczne, należy do klasy a nie obiektu• readonly – pole tylko do odczytu (wartość możne nadać konstruktor)• const – stała – wartość typu prostego, nadawana w czasie kompilacji

i później nie może być zmieniona; należy do klasy (≈ static readonly)

class Sample{

public const Double

PI

=

3.1415;

public static readonly

DateTime Start

=

DateTime.Now;

private Int

length;

Definicja klasy Właściwości

  • Właściwości służą do kontrolowanego dostępu do stanu obiektu –

umożliwiają odczyt i zmianę stanu (tj. wartości prywatnych pól)

  • Właściwość składa się z dwóch metod: accesor (odczyt pola) oraz

mutator (zmiana wartości pola); w językach C++/Java służą do tegooddzielne metody (w slangu Java nazywane getter i setter), natomiastw C# połączone w jedną konstrukcję składniową

  • Właściwość składa się z sekcji get i/lub set;

Obie sekcje są w pewnym sensie metodami – można dla nich używaćmodyfikatorów takich jak dla metod (np. virtual, override)

  • Używanie właściwości nie oznacza spowolnienia programu – kompilator

JIT może zastępować wywołania prostych (niewirtualnych) właściwościkodem sekcji get lub set

Definicja klasy Właściwości

  • Definicja właściwości, przykład

private

Double

promień;

public

Double

Promień

{

get {

return

promień;

} set {

if

(

valuevaluevaluevalue

<0)

throw new

ArgumentException();

promień =

valuevaluevaluevalue

;

} public

Double

Powierzchnia

{

get {

return

Math

.PI * promień * promień;

} }

Definicja klasy Metody

  • Odpowiadają za wykonywanie działań, które definiują zachowanie się

obiektów (można powiedzieć że definiują polecenia, które możnawydawać obiektom)

  • Mogą być przeciążone

Przeciążenie metody to definiowanie wielu metod o tej samej nazwie,ale różniących się liczbą i/lub typami argumentów (do przeciążenia niewystarczy inna nazwa argumentu lub inny typ rezultatu)

  • Odpowiadają za polimorfizm (modyfikatory virtual i override)