Application Programming Hend Alkittawi Final Exam Review You’ve Got This! ☺ IMPORTANT MIDTERM MATERIAL ● Understand Java fundamentals ○ Classes and Objects ○ Variables and Methods [getters, setters, toString, equals, object methods/variables, static methods/variables] ○ Class Relationships ○ Arrays, and ArrayLists ○ File I/O ○ UML diagrams ■ Code to diagram ■ Diagram to code SOLID PRINCIPLES ● ● Be familiar with the SOLID Principles ○ The Single Responsibility Principle (SRP) ○ The Open Closed Principle (OCP) ○ The Liskov Substitution Principle (LSP) ○ The Interface Segregation Principle (ISP) ○ The Dependency Inversion Principle (DIP) Understand why it is important to consider these principles ○ Rigidity ○ Immobility ○ Fragility ○ Viscosity MVC ● Be familiar with the “design architecture” concept ● Understand what the MVC design architecture is ● Be able to create an Android project that follows the MVC design architecture model data storage, integrity, consistency, queries & mutations controller view receive, interpret & validate input, create & update views, query and modify models presentation assets & code user ANDROID BASICS ● Be able to design a simple multi-screen, data-driven Android application and provide the UML diagram for it. ● Be able to create a layout XML file with basic views (Buttons, TextViews, ImageViews, …) ● Be able to create an Activity class as a controller class in an Android app (listen to the user interactions, and manage the flow of app data) ● Understand how to utilize Java and Android APIs to perform I/O operations (AssetsManager, InputStream, OutputStream, … ) EXCEPTIONS ● Understand the difference between Java Exceptions and Java Errors ● Understand the difference between checked and unchecked exceptions ● Be familiar with Java exceptions (NullPointerException, IOException, … ) ● Understand the difference between throwing an exception and handling it ● Understand what the call stack is EXCEPTIONS GENERICS AND COLLECTIONS ● Understand the advantages of using generics in Java programs. ● Be able to create classes and methods that utilize generic types. ● Understand the difference between the List, Map, and Set Java collections. ● Be able to use Java collections as part of a Java program. ● Be able to utilize the following interfaces in a Java application: Iterator, Iterable, Comparable, Comparator LAMBDA EXPRESSIONS ● Understand what a functional interface is ● Understand what a lambda expression is ● Be able to trace code that uses lambda expressions ● Be able to write code that uses lambda expressions ● Be able to use Java’s functional interfaces in a Java application THREADS ● Understand the difference between a process and a thread. ● Be able to trace code that involves threads in Java. ● Be able to create threads in Java by extending the Thread class. ● Be able to create threads in Java by implementing the Runnable interface. ● Understand the importance of thread synchronization in Java applications. ● Understand the difference between the main thread (UI thread) and other threads in an Android application. ● Understand the importance of utilizing threads in an Android application (preventing ANR). UNIT TESTING ● Be familiar with unit testing and the JUnit framework. ● Be able to create basic test cases VERSION CONTROL ● Understand Git/Github terminology and workflow (local/remote repo, stage, commit, push, pull) DO YOU HAVE ANY QUESTIONS? THANK YOU! @ hend.alkittawi@utsa.edu By Appointment Online