Browse Source

Erste Version

Simon Hammer 3 years ago
parent
commit
dc9204018f
3 changed files with 85 additions and 17 deletions
  1. 6 0
      .gitignore
  2. 40 0
      maturText/lit/refs.bib
  3. 39 17
      maturText/matur.tex

+ 6 - 0
.gitignore

@@ -11,3 +11,9 @@ Include/
 *.idx
 *.idx
 *.ilg
 *.ilg
 *.ind
 *.ind
+*.bcf
+*.blg
+*.fdb_latexmk
+*.fls
+*.bbl
+*.run.xml

+ 40 - 0
maturText/lit/refs.bib

@@ -91,3 +91,43 @@ month = {September},
 year = {2021},
 year = {2021},
 note = {(Accessed on 09/19/2021)}
 note = {(Accessed on 09/19/2021)}
 }
 }
+@misc{roomStructure,
+author = {Sagar Garg},
+title = {Room Persistence Library - DZone Database},
+howpublished = {\url{https://dzone.com/articles/room-persistence-library}},
+month = {},
+year = {},
+note = {(Accessed on 09/19/2021)}
+}
+@misc{appStructure,
+author = {vhaecky},
+title = {Android Room with a View - Java},
+howpublished = {\url{https://developer.android.com/codelabs/android-room-with-a-view\#0}},
+month = {},
+year = {},
+note = {(Accessed on 09/19/2021)}
+}
+@misc{appStructurePicture,
+author = {Android Developers},
+title = {Android Room with a View - Java},
+howpublished = {\url{https://developer.android.com/codelabs/android-room-with-a-view\#15}},
+month = {},
+year = {},
+note = {Edited by Simon}
+}
+@misc{LayoutManagerPicture,
+author = {Anonoymous},
+title = {LayoutManager | Android | myMusing},
+howpublished = {\url{https://mymusing.co/layoutmanager-android/}},
+month = {},
+year = {},
+note = {Edited by Simon}
+}
+@misc{roomApp,
+author = { Avatar Florina Muntenescu},
+title = {GitHub - googlecodelabs/android-room-with-a-view},
+howpublished = {\url{https://github.com/googlecodelabs/android-room-with-a-view}},
+month = {},
+year = {},
+note = {Edited by Simon}
+}

+ 39 - 17
maturText/matur.tex

@@ -172,7 +172,9 @@ sorting=ynt
 	
 	
 	{\huge\bfseries Eine Email-Client-App entwickeln \par}
 	{\huge\bfseries Eine Email-Client-App entwickeln \par}
 	\vspace{0.5cm}
 	\vspace{0.5cm}
-	{\Large Noah Vogt \& Simon Hammer\par}
+	{\Large Noah Vogt \& Simon Hammer Klasse 4cg\par}
+    \vspace{0.5cm}
+    {\Large Victor Yakhontov \& Daniel Bühler \par }
 	\vspace{17cm}
 	\vspace{17cm}
 
 
 	{\large Geschrieben im Jahr 2021\par}
 	{\large Geschrieben im Jahr 2021\par}
@@ -371,7 +373,22 @@ Dies ist ein Software-Tool für die Interaktion mit Android-Geräten, die per US
 Beim Programmieren kann es sehr hilfreich sein Programme zu haben welche, ähnliche Funktionen haben wie das Programm welches entstehen soll. 
 Beim Programmieren kann es sehr hilfreich sein Programme zu haben welche, ähnliche Funktionen haben wie das Programm welches entstehen soll. 
 Solche Vorlagen können beliebig getestet und verändert werden. Simon hatte zu Beginn Schwierigkeiten Java zu nutzen, um Programme zu schreiben, da er noch nicht viel 
 Solche Vorlagen können beliebig getestet und verändert werden. Simon hatte zu Beginn Schwierigkeiten Java zu nutzen, um Programme zu schreiben, da er noch nicht viel 
 Erfahrung mit dem Programmieren hatte. Um sich mit der Art der Sprache und des Programmierens vertieft auseinander zu setzen, begann er Email-Apps, welche Open Source
 Erfahrung mit dem Programmieren hatte. Um sich mit der Art der Sprache und des Programmierens vertieft auseinander zu setzen, begann er Email-Apps, welche Open Source
-waren, genauer zu Betrachten. Im folgenden Text werden wir diese Programme aufführen und zeigen für was wir sie gebraucht haben. 
+waren, genauer zu Betrachten. Zu beginn haben diese Programme grosse Teile des Programms ausgemacht doch gegen Ende wurde sie so oft überarbeitet, dass es
+kaum noch eins zu eins Ausschnitte aus diesen Programmen gibt. \\
+
+Als Basisprogramm für die Roomdatabase hat Simon ein Open source Programm gebraucht, welches als Tutorial diente. \cite{roomApp}
+
+Stark davon betroffen sind die Dateien EmailViewModel.java, EmailViewHolder.java, CustomAdapter.java, EmailRepository.java, EmailRoomDatabase.java, Message.java, MessageDao.java
+und NewDraftMessageActivity.java. Bei diesen
+Dateien handelt es sich um fast Kopien des Basisprogramms, sie wurden stark erweitert und sie werden von anderen Funktionen aufgerufen. 
+Die Dateien ArchiveFragment.java, GalleryFragment.java, HomeFragment.java, DraftFragment.java, SpamFragment.java und MainActivity.java beinhalten alle fünf Zeilen beginnend mit der 
+Variabel mEmailViewModel vom Typ EmailViewModel. Diese fünf Zeilen sind jeweils auch aus dem Basisprogramm. 
+Weiter beinhaltet die Datei MainActivity.java eine Funktion namens onActivityResult von Zeile 183-215, welche auch aus dem Basisprogramm stammen. 
+Sehr ähnliche Zeilen befinden sich auch in der messageCreateFragment.java Datei von Zeile 120-140. Diese Stammen ursprünglich auch aus dem Basisprogramm, wurden aber natürlich bearbeitet. \\
+
+
+
+
 
 
 % \subsubsection{Librarys}
 % \subsubsection{Librarys}
 % (bedeutung im glossar erklärt)
 % (bedeutung im glossar erklärt)
@@ -445,7 +462,6 @@ Vorlesungen besuchen konnten. Ein Klassenkamerad von Simon konnte von diesem Pro
 Dort lernte er in einem unglaublichen Tempo Java, weshalb Simon seinen Klassenkameraden fragte ob er seine Unterlagen ausleihen konnte. 
 Dort lernte er in einem unglaublichen Tempo Java, weshalb Simon seinen Klassenkameraden fragte ob er seine Unterlagen ausleihen konnte. 
 Sein Klassenkamerad war so freundlich und übermittelte ihm die Unterlagen. So konnte Simon auf effektive weise Java lernen. \\
 Sein Klassenkamerad war so freundlich und übermittelte ihm die Unterlagen. So konnte Simon auf effektive weise Java lernen. \\
 
 
-\textbf{ Noah wie hesch du Java glernt?}
 Persönlich hatte Noah schon Erfahrung mit verschieden Programmiersprachn. Am ähnlichsten zu Java waren dabei meiner Einschätzung nach C und C++, welche eine teilweise ähnliche Sytax gegenüber Java aufweisen. Wirklich etwas mit Java gemacht hat er bei der Pluginprogrammierung für Minecraft und im EF (Ergänzungsfach Informatik) am GKG (Gymnasium Kirschgarten).\\
 Persönlich hatte Noah schon Erfahrung mit verschieden Programmiersprachn. Am ähnlichsten zu Java waren dabei meiner Einschätzung nach C und C++, welche eine teilweise ähnliche Sytax gegenüber Java aufweisen. Wirklich etwas mit Java gemacht hat er bei der Pluginprogrammierung für Minecraft und im EF (Ergänzungsfach Informatik) am GKG (Gymnasium Kirschgarten).\\
 
 
 Als nächstes ging es darum wie eine App aufgebaut ist und wie zwei Personen Zweitgleich an einem 
 Als nächstes ging es darum wie eine App aufgebaut ist und wie zwei Personen Zweitgleich an einem 
@@ -463,6 +479,8 @@ Anschliessend erstellte Noah ein GitHub repository in welchem die beiden das Pro
 
 
 % \textbf{ https://www.youtube.com/watch?v=2sjqTHE0zok} nur um später zu makieren.
 % \textbf{ https://www.youtube.com/watch?v=2sjqTHE0zok} nur um später zu makieren.
 
 
+\newpage
+
 \subsection{Interface}
 \subsection{Interface}
 
 
 Noah begann dann dieses Programm leicht auszubauen und fügte einige Interface Inhalte hinzu. 
 Noah begann dann dieses Programm leicht auszubauen und fügte einige Interface Inhalte hinzu. 
@@ -508,7 +526,7 @@ für eine versetzen unterteilung der View kann sorgen. Dies ist aber für eine E
 \begin{figure}[H]
 \begin{figure}[H]
     \centering
     \centering
     \includegraphics[width=.4\textwidth]{media/RecyclerviewLayoutManagerCropt.jpeg}
     \includegraphics[width=.4\textwidth]{media/RecyclerviewLayoutManagerCropt.jpeg}
-    \caption{Layout Manager Recyclerview}
+    \caption{Layout Manager Recyclerview \cite{LayoutManagerPicture}}
 \end{figure}
 \end{figure}
 
 
     \item Der View Holder bietet die Möglichkeit jedes einzelne Raster der View mit einem Item auszustatten mit wiederum einer View in einem Recyclerviewer
     \item Der View Holder bietet die Möglichkeit jedes einzelne Raster der View mit einem Item auszustatten mit wiederum einer View in einem Recyclerviewer
@@ -601,12 +619,13 @@ Als letztes gibt es noch das Attribut \textit{folder}, es gibt an, von welcher A
 folder Attributen, in den richtigen Ordnern angezeigt werden. Jeder Ordner hat sein eigenes Fragment, welches aufgerufen wird, wenn der Ordner ausgewählt wird.
 folder Attributen, in den richtigen Ordnern angezeigt werden. Jeder Ordner hat sein eigenes Fragment, welches aufgerufen wird, wenn der Ordner ausgewählt wird.
 Wenn ein solches Fragment aufgerufen wird, wird auch die Database mit den richtigen Befehlen neu ausgelesen.  \\
 Wenn ein solches Fragment aufgerufen wird, wird auch die Database mit den richtigen Befehlen neu ausgelesen.  \\
 
 
-\textbf{ Quelle Room https://dzone.com/articles/room-persistence-library}
 
 
 Für Android gibt es nicht viele Sprachen um eine Database zu erstellen. Die bekannteste ist SQLite .Jedoch ist SQLite nicht sehr simple und es kann sehr komplex werden, wenn
 Für Android gibt es nicht viele Sprachen um eine Database zu erstellen. Die bekannteste ist SQLite .Jedoch ist SQLite nicht sehr simple und es kann sehr komplex werden, wenn
 die Database bis auf bytes genau Programmiert werden soll. Ebenfalls lag es nicht im Zeitplan eine weitere Programmiersprache zu lernen. Nach kurzer 
 die Database bis auf bytes genau Programmiert werden soll. Ebenfalls lag es nicht im Zeitplan eine weitere Programmiersprache zu lernen. Nach kurzer 
 recherche stellte sich heraus, dass es eine Library gibt, welche den Umgang mit SQLite vereinfacht und diese sogar mehr Sicherheit bietet.\\
 recherche stellte sich heraus, dass es eine Library gibt, welche den Umgang mit SQLite vereinfacht und diese sogar mehr Sicherheit bietet.\\
 
 
+\newpage
+
 
 
 \begingroup
 \begingroup
 \setlength{\intextsep}{10pt}
 \setlength{\intextsep}{10pt}
@@ -615,14 +634,14 @@ recherche stellte sich heraus, dass es eine Library gibt, welche den Umgang mit
 \begin{wrapfigure}{r}{8cm}
 \begin{wrapfigure}{r}{8cm}
     \centering
     \centering
     \includegraphics[width=.4\textwidth]{media/RoomStructure.png}
     \includegraphics[width=.4\textwidth]{media/RoomStructure.png}
-    \caption{Room Struktur}
+    \caption{Room Struktur \cite{appStructurePicture}}
 \end{wrapfigure}
 \end{wrapfigure}
 
 
 
 
 Room ist eine Art Schicht über der SQLiteDatabase. 
 Room ist eine Art Schicht über der SQLiteDatabase. 
 Room besteht grundsätzlich aus drei Teilen. Die Database dient als Hauptzugriffspunkt für die gespeicherten Daten der App. Sie ist mit @Database markiert. 
 Room besteht grundsätzlich aus drei Teilen. Die Database dient als Hauptzugriffspunkt für die gespeicherten Daten der App. Sie ist mit @Database markiert. 
 Eine \textit{Entity} repräsentiert einen \textit{table} in der Database und die \textit{DAO} Klasse beinhaltet die Methoden um auf die Database zu zu greifen. Sie kommuniziert
 Eine \textit{Entity} repräsentiert einen \textit{table} in der Database und die \textit{DAO} Klasse beinhaltet die Methoden um auf die Database zu zu greifen. Sie kommuniziert
-mit SQLite um de Zugriff auf die Daten zu ermöglichen 
+mit SQLite um de Zugriff auf die Daten zu ermöglichen \cite{roomStructure}
 
 
 
 
 \subsubsection{MessageDao}
 \subsubsection{MessageDao}
@@ -642,8 +661,8 @@ dennoch werden wir darauf eingehen.\\
 \textit{Querys} sind anfragen an die Database nach Informationen. Sie können auf verschiedene \textit{tables} zugreifen und Informationen abgleichen und auswählen. 
 \textit{Querys} sind anfragen an die Database nach Informationen. Sie können auf verschiedene \textit{tables} zugreifen und Informationen abgleichen und auswählen. 
 In einer DAO von Room werden die SQL-statements mit @Query markiert. SELECT heisst, dass etwas ausgewählt werden soll und mir * ist gemeint alles. Mit FROM wird nochmals angegeben von 
 In einer DAO von Room werden die SQL-statements mit @Query markiert. SELECT heisst, dass etwas ausgewählt werden soll und mir * ist gemeint alles. Mit FROM wird nochmals angegeben von 
 welchem table, in diesem Fall vom message\_table. Die Entity die wir weiter oben schon erklärt haben. Mit WHERE können Spalten der Entity ausgewählt werden. Hier wird die \textit{folder} Spalte 
 welchem table, in diesem Fall vom message\_table. Die Entity die wir weiter oben schon erklärt haben. Mit WHERE können Spalten der Entity ausgewählt werden. Hier wird die \textit{folder} Spalte 
-gewählt um mit LIKE ein Attribut zu bestimmen. So wird nun ein Attribut namens 'Draft' gewählt. Mit ORDER By kann die Ausgabe noch sortiert werden. So wird die ausgabe anhand der Spalte 'date'
-nach dem ASC-code sortiert.
+gewählt um mit LIKE ein Attribut zu bestimmen. So wird nun ein Attribut namens 'Draft' gewählt. Mit ORDER By kann die Ausgabe noch sortiert werden. So wird die Ausgabe anhand der Spalte 'date'
+nach dem ASC-code sortiert. \cite{appStructure}
 
 
 \subsection{Repository/ViewModel}
 \subsection{Repository/ViewModel}
 
 
@@ -654,7 +673,8 @@ nach dem ASC-code sortiert.
 \begin{wrapfigure}{r}{5.5cm}
 \begin{wrapfigure}{r}{5.5cm}
     \centering
     \centering
     \includegraphics[width=.4\textwidth]{media/ViewModelRepository.png}
     \includegraphics[width=.4\textwidth]{media/ViewModelRepository.png}
-    \caption{EmailViewModel and Repository}
+    \caption{EmailViewModel and Repository
+    \cite{appStructurePicture}}
 \end{wrapfigure}
 \end{wrapfigure}
 
 
 Mit der Database wurden auch ein Repository und ein Viewmodel mit Viewholder erstellt. 
 Mit der Database wurden auch ein Repository und ein Viewmodel mit Viewholder erstellt. 
@@ -736,12 +756,14 @@ Im \textit{Cunstroctor} von dem EmailViewModel wird der Variable mInboxMessage d
 \subsection{Draft Messages}
 \subsection{Draft Messages}
 
 
 \begingroup
 \begingroup
-\setlength{\intextsep}{3pt}
+\setlength{\intextsep}{1pt}
 \setlength{\columnsep}{4pt}
 \setlength{\columnsep}{4pt}
 
 
 
 
-\begin{wrapfigure}{r}{6cm}
-    \includegraphics[width=.4\textwidth]{media/AppStructure.png}
+\begin{wrapfigure}{r}{9cm}
+    \centering
+    \includegraphics[width=.55\textwidth, height=.55\textwidth]{media/AppStructure.png}
+    \caption{App Structure \cite{appStructurePicture}}
 \end{wrapfigure}
 \end{wrapfigure}
 
 
 Der ganze Aufbau der in den Kapitel von vorhin erklärt wurde, hatte nur zwei Ziele. Einmal das einlesen von Emails von einem Server und das Einlesen von Emails
 Der ganze Aufbau der in den Kapitel von vorhin erklärt wurde, hatte nur zwei Ziele. Einmal das einlesen von Emails von einem Server und das Einlesen von Emails
@@ -843,17 +865,17 @@ Wir (Simon und Noah) möchten uns bedanken bei unserer Betreuungslehrperson Dr.
 
 
 %=======================================
 %=======================================
 
 
-%\pagebreak
+\pagebreak
 
 
-%\section{Stichwortverzeichnis}
+\section{Stichwortverzeichnis}
 
 
 %index Verzeichnis
 %index Verzeichnis
 % Index soll Stichwortverzeichnis heissen
 % Index soll Stichwortverzeichnis heissen
-%\renewcommand{\indexname}{Stichwortverzeichnis}
+\renewcommand{\indexname}{Stichwortverzeichnis}
 
 
 % Stichwortverzeichnis endgueltig anzeigen
 % Stichwortverzeichnis endgueltig anzeigen
 
 
-%\printindex % run: makeindex
+\printindex % run: makeindex
             % Aufgaben_zum_LaTeX_Kurs.idx; und nochmals latex
             % Aufgaben_zum_LaTeX_Kurs.idx; und nochmals latex