From 7f16cddbb8f66f7a4ab3a70a99c778ea6638755d Mon Sep 17 00:00:00 2001 From: Desislava Asenova <9128192+desislavaa@users.noreply.github.com> Date: Wed, 23 Oct 2024 18:50:20 +0300 Subject: [PATCH] Add sealed classes and interfaces details (#160) --- .../images/03.6-sealed-hierarchy-1.png | Bin 0 -> 21386 bytes .../images/03.6-sealed-hierarchy-2.png | Bin 0 -> 37098 bytes .../images/03.6-sealed-hierarchy-3.png | Bin 0 -> 44009 bytes .../images/03.6-sealed-hierarchy-4.png | Bin 0 -> 28875 bytes 03-oop-in-java-ii/lecture/slides.md | 140 +++++++++++++----- 5 files changed, 100 insertions(+), 40 deletions(-) create mode 100644 03-oop-in-java-ii/lecture/images/03.6-sealed-hierarchy-1.png create mode 100644 03-oop-in-java-ii/lecture/images/03.6-sealed-hierarchy-2.png create mode 100644 03-oop-in-java-ii/lecture/images/03.6-sealed-hierarchy-3.png create mode 100644 03-oop-in-java-ii/lecture/images/03.6-sealed-hierarchy-4.png diff --git a/03-oop-in-java-ii/lecture/images/03.6-sealed-hierarchy-1.png b/03-oop-in-java-ii/lecture/images/03.6-sealed-hierarchy-1.png new file mode 100644 index 0000000000000000000000000000000000000000..21d55243cd9a1783ac9cf765f2fd3a5c65361f59 GIT binary patch literal 21386 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 P0l#gYK3nSC=~;gVGR%|k literal 0 HcmV?d00001 diff --git a/03-oop-in-java-ii/lecture/images/03.6-sealed-hierarchy-3.png b/03-oop-in-java-ii/lecture/images/03.6-sealed-hierarchy-3.png new file mode 100644 index 0000000000000000000000000000000000000000..bdb57dae0a67a0bbba0d436791bcf8a432e91933 GIT binary patch literal 44009 zcmeFY1zZ(cwm7VUC<-DaDJZRUgOn1|A#vzBaOgaAgIIJ6N+=-+9J-N|2BoACP+Gb> zzI_nyb?)3ZGynJQ%zXE~@rQ8Ej;WOFoq~Fe*5ooj*Q?s{pHZrw|qw*FK7n8<(0rMHSnL6MVFORm-`m@c+bYh0;URsN}Jjvp|Eo^v2%fDI%x@ISs7|J z5%Af<)Eox>h{Fubt&vj<;rdQYrq*CM8wV3N6Dv1p6ET5XTY^#dS=o4)SeUrDSlPb= z`W5y2>};Ti6%1C=H`0fj{VZEaz1YV((k2G&+qfD8U&pgtUK?ev$!jI1qAcXzs~ z4cPc!OhPs&{S`@(t*WMm_JDDa9LK{3P8GQeWV-~+)Y#<5%B)qaAWLTvm<5u1f6(!C9l$vM?{j~l2K*P{`JaG; z-E$Tfab$Pl<~4fYEG=du!NUe)H~|g=ZAR8s_NRQp%7y$6L|nw$!umVIvm5Hec#I4{yB$yo=CGf7 zxD0q;P$SUu*@A^klDk2ur6}c-#&w1PeL39#M>V30yc6wot^iTey4oT%6(`H6!#PuuiQ8Q1t1&`2`Wm6tDr~$+dDs1Fr z=4|2MWC~;C{Hqg!83GwOJuqvyy@|E4wUxew*sra^aBBxELl{!jfW{I2b&QO)H8{hQ zvo(X++q;||q`rf_H5m8P$pbcoyQm@OGjW2RldtNhGf%#VA_cZhPo{#;zd}WR`2qAh0g$@}L&2Bdk(SdYJ8K8{ z3A2Jxze~*1arXLfW7w(A_^*ZKZ=c`qvL75~p>J>M_?L+O9xwePuz#!oD5{U-?H_P# ztbrA^LsI1*hw=lKrLzKZ_OFt{d&*x(VgrzD9H#>C_gVcr$e({BS^78NIXM0h`0T*c z-~UdBe`L=m!+}x!A-sQk>kAVf=d||1p{Uq0oNSwbX1}7J%V|4NV=vM`Ps2A5BP& z3eMwK70hMpfHXiSs+Q62#3m!%2Ud0)AauxSr~SVG5@Dmh2NW?-0@UE6@Gp=7&AtQw z%LSqEUuK?S1qS|vn20Id09b>6lVSKPD}Xffzp)j6`;>m=^^OK_b;X?l8y!~jhv(X0;xqp&Z`5pNGn^&oz57)P_fLU07 zkA5Ku|C8AMbocycMjigi&gBnp^3ShWdA{p{pHApsp;)c{b>8J^IP5>(_ahvWH=`j>wvl=|D-|9=zyiHiFZg;GzI$)D8gRkC#e z!OOpLrv6vByX;7YMf&llik|()&Fjw>Ol3WNHvU)pyMF>jf1<$uG7S5>ivGJr_-AVR zf8?hA$2)MWrv&&}0kPlzgC*LC#{g#VyU*rO9!?G*SK#GH-_GRZNf-Gt|9$y?t{?YX z@#gsPcJe0_@Bj7JS=QeP-u=FqB3b93DW(4i?C+iqyU4%tW&0O){)61H-#ncEH^Kke zys_VjLH?gmhCg)Q{{mO%-}7ejzcr!gKXJt0ru;DeF)2SkY{Xwb@cc3G|7@D~uLFrc zo_c=g_2++_Q$%NnOio6o-WZsJBwLVK{XKsP7|-8JDFV$uWAVqE1S2E1-}jFVxu9H} zCyA&ajq2xgQ!eDce}~`9$oju00Q%#G|DSvDZ_{#FPlJ7bHvoF#G5sS>F*1Adr-ZeC zH~{)@x)z`A|Nq>znBzB(yno`T*N;r<|48>=N%v`X<=>U=6RZ5cP`Xd||4)@}Lrxfv zAqOzge^o02svy|^J;wXDkC%UD=|1%s|0CVMm2S3wG+6e3=kbz_{XdVFfBf6Q4@Uc0 zjhS-wf8&Pschd9zPv6d1dH#R=XnDec|3&%fDR=%<==-zVank#vwD^0+=>%lu z_VEd?$(D8>6?dR7A2h*1lN)l!SxfkqJOz5Iy&m4nla7>h3w@kDk^!3dm4D zGgJ%3R6Q4!=EE4eKR((8^hXJ28l+~4^3hJgU1UFpN3Z{cONKsG4PB`M@%iaR1;kEh z!Jx|b0qfYW)mUG3)IBoBq3)S{8!zD10=jrkv}zZ-q41)+PisBx#}*n3FP1e zc@u2(&@;#%1w;%#8XZJt>F!HwLa@#g+w+(=zwg3l8{G!h5clBT@6QB%ldJ$L{6e>T z-BkcJkly6tDOAvR8`+01pHE&6)|lNoGfaC5_3A|%k{I4PUx1Wna&IFg7{>pqlj3x< zxwrt5F$+NJlXc;cGb$Yio`7xYYuyt$-R2jMb6V=G z#>)T2Owi|o0s21saE!44s2CHMh=os~YN_W*fj+f{h=r$CV2yHtnk~ui#Jhod?lYQE z`wBoRZOo)-6;PhAgSPP531z)e7XYLWL>PGV(;FmNTx0;XiQPxn!cHg~>V31JbwV7= z_HYgc)6B=ah0U$=@NR1I7H6O?$`0u@(bf(HwZ=_9yIC=q0M52Xxik@dyJH zVRnu8pgEy53+7qMXHjH})s6lQ1rJh0i6YY#uIEiO)@^;9?-^q=+(T{SUKHth+eHUC zCyL+TZ~BA~lamK*!I$sZ^!F|7aGf22PVKH6H^1QG%AaWsfRSvW!SBCnXY4U+8!z&r zP)z`cy!tapLkp4!Kb=iBAH@{-n6RJPO7(|ILys{MTrq~ z;UMNT52!eQX}F;k(Llm#-G{d@y2_V7wS$+%x79c!R-HTMHd{l6(6~b|%#|hf@R6TF zZZpAK$h(_tu$I*9Z-ZY+3_GGOnULzIpx0fbICuJg>(%9ZfLV zBZH?{6zZ+YbV^mkRc2jhu_;7XFb))Y-bY0#)J$YiUG+ZGaH-Dc^e{1G?v|*9rR*}? zO1dq4y&UWApcH4Qpux3AmkE{x%!=dicfU-?=TpKm3J3D_i^{FG^GGCOW+}Da!LfDm znjaCe8YJEy$yu5HXpYd~($y~5u4feW!@)maKwT%ay_{j5(SrzabFxZzHFPj;DId8= zF32ys(vztrIzqe2zcWKtY_0zEl8TwZ=fd+t0#bQNBj-74C;)>oj7vEBei!AJsP+N) ziMNFlWh00kYbYrEqZpoc<7XtwG|X)oy2h%R_7{;)dMQ3hAH>U5OL!fc+EZ?D<*?bG|@mThTA4zlA}2`1>Q1Xv0O64V^%rK+2--Y zK>P}{KP*!sj_O5*vBa2M%wd}-V$iX^N-CNDHXX!1%=jGyDZHE^`9j|{+H(p$)I5s2 z`%UTMM5vik(KP9JFoaA_Q@tBSs$c*iHSyz{F4G{?dZg6$GhX2){hrfCAYMs5L7Y;VK~gi@S_Du zWxAIr@vc{d7tzMPtS_{vyg#n_8nMvdTwEB;IB!scC6weD0nwQ7hKkX9a#
  • >8Zr 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 d3T6KBtDK*`mw%)EZ{Y2O44$rjF6*2Ung9 Math.pow(c.radius(), 2) * Math.PI - case Rectangle r -> r.a() * r.b() -}; -``` +.center[![Hierarchy Example](images/03.6-sealed-hierarchy-1.png)] --- -### Sealed класове и интерфейси +### Sealed класове и интерфейси: какъв проблем решават? + +На теория, стига да са `public` и да **не са** `final` или с `private`, всички класове могат да бъдат наследени: -- Като разрешаваме само на предварително дефинирано множество от класове да наследяват даден клас, може да разделим *достъпността* (*accessibility*) от *разширяемостта* (*extensibility*) на класовете -- С други думи, може да направим `sealed` клас достъпен за други пакети, и въпреки това да контролираме, кой може да го наследява -- Преди Java 17, за постигнем подобен ефект, имаше две опции: - - да направим класа package-private (което обаче ограничава достъпа до този клас) - - да направим класа `public`, но с `private` или package-private конструктори (това прави класа видим, но дава много ограничен контрол върху конкретните типове, които могат да го наследят) +.center[![Hierarchy Extensibility](images/03.6-sealed-hierarchy-2.png)] --- -### Sealed класове и интерфейси +### Sealed класове и интерфейси: какъв проблем решават? -- При `sealed` класовете и интерфейсите, съществува изчерпателен списък от наследниците, който е известен на компилатора, IDE-то и JVM-a, което позволява по-мощен анализ на кода - - например, `instanceof` и casts могат да проверяват цялата йерархия статично +#### Решение без sealed класове/интерфейси: + +* дефинираме ги като `final` +* дефинираме ги като package-private (което обаче ограничава достъпа до този клас) +* дефинираме `private` или `package-private` конструктори (това прави класа видим, но дава много ограничен контрол върху конкретните типове, които могат да го наследят) --- +### Sealed класове и интерфейси: какъв проблем решават? + +#### Решение без sealed класове/интерфейси: + +.center[![Non-Sealed Hierarchy](images/03.6-sealed-hierarchy-3.png)] + +--- + +### Sealed класове и интерфейси: какъв проблем решават? + +#### Решение със sealed класове/интерфейси: +* намерението да ограничим йерархията от класове е дефинирано _**експлицитно**_ (и лесно) +* разделяме *достъпността* (*accessibility*) от *разширяемостта* (*extensibility*) на класовете + +.center[![Sealed Hierarchy](images/03.6-sealed-hierarchy-4.png)] +--- + ### Sealed класове -- наследниците на `sealed` клас могат да бъдат `final`, `non-sealed` или `sealed` +- наследниците на `sealed` клас могат да бъдат `final`, `sealed` или `non-sealed` - `sealed` клас може да бъде и абстрактен -- `sealed` класът и неговите permitted класове трябва да са в един пакет +- `sealed` класът и неговите permitted класове **трябва да са в един пакет** - ако `sealed` класовете са кратки и малък брой, те могат да се дефинират в същия сорс файл като родителския клас - в този случай, `permits` клаузата може да се пропусне - компилаторът приема за имплицитно permitted класовете в дадения сорс файл --- -### Sealed класове +### Sealed класове: дефиниции ```java -public sealed class Plant permits Herb, Shrub, Climber {} - +// sealed класовете декларират, кои класове могат да ги наследяват +public abstract sealed class Shape + permits Circle, Rectangle, Parallelogram, WeirdShape {...} -final class Herb extends Plant {} +// дефиниране на класове - final наследници на sealed клас +public final class Circle extends Shape {...} // OK +public final class Parallelogram extends Shape {...} // OK -non-sealed class Shrub extends Plant {} +// дефиниране на класове - sealed наследници на sealed клас +public sealed class Rectangle extends Shape permits Square {...} // OK +public final class Square extends Rectangle {...} // OK -sealed class Climber extends Plant permits Cucumber{} +// дефиниране на класове - non-sealed наследници на sealed клас +public non-sealed class WeirdShape extends Shape {...} // OK -final class Cucumber extends Climber {} +// не можем да разширяваме йерархията извън зададените ограничения +public class Triangle extends Shape {...} // Compile error ``` --- +### Sealed класове и интерфейси + +- При `sealed` класовете и интерфейсите, съществува изчерпателен списък от наследниците, който е известен на компилатора, IDE-то и JVM-a, което позволява по-мощен анализ на кода + - например, `instanceof` и casts могат да проверяват цялата йерархия статично + - може да изпозлваме "умен" `switch`, който няма нужда от `default` case, ако всички класове са изброени +--- +### Sealed класове и интерфейси + +Sealed класове като селектор на switch: +```java +// няма нужда от default case, ако всички позволени класове са изброени +double area = switch (shape) { + case Circle c -> Math.pow(c.radius(), 2) * Math.PI + case Rectangle r -> r.a() * r.b() +}; +``` +--- + + ### Sealed интерфейси - `sealed` интерфейсите могат да специфицират, кои интерфейси могат да ги наследяват и кои класове могат да ги имплементират @@ -637,11 +696,6 @@ final class Karate implements Kick {} --- -### Нововъведенията в Java в 2021 - -.center[![Stack vs. heap](images/03.1-favorite-new-java-features.png)] - ---- class: center, middle @@ -741,6 +795,12 @@ class: center, middle --- +### Какво представляват изключенията? +* Нормални java обекти, целящи да опишат възникналия проблем. +* Инстанции са на "специални" класове, които също имат йерархия (ще я разгледаме по-късно). + +--- + ### Как се генерира ("хвърля") изключение? ```java @@ -1016,4 +1076,4 @@ Exception in thread "main" java.lang.NullPointerException: .font-xl[.ri-github-fill.icon-inline[[fmi/java-course](https://github.com/fmi/java-course)]] -.font-xl[.ri-youtube-fill.icon-inline[[MJT2023](https://www.youtube.com/playlist?list=PLew34f6r0PxyQmWCgCP5gKeoBuzXJxq1w)]] +.font-xl[.ri-youtube-fill.icon-inline[[MJT2024](https://www.youtube.com/watch?v=nUqYohPFCfE&list=PLew34f6r0Pxys4arinMND8JUh7JyXzeMw)]]