Skip to content
Snippets Groups Projects
Commit 21a9c6c1 authored by Sepehr Bayat's avatar Sepehr Bayat
Browse files

Upload New File

parent 88b084f9
No related branches found
No related tags found
No related merge requests found
% Define Document Class
% Class Options Include:
% notes, notesonly, handout, trans,
% hidesubsections, shadesubsections,
% inrow, blue, red, grey, brown
%--------------------------------------------------------------------------
\documentclass[xcolor=dvipsnames, shownotes, colorlinks]{beamer}
%--------------------------------------------------------------------------
% Define Package Theme
%--------------------------------------------------------------------------
\usepackage{color}
\usepackage{multirow}
\usepackage[T1]{fontenc}
%% \usepackage{fix-cm}
\usepackage{hyperref}
\usepackage[utf8]{inputenc}
\usepackage[british]{babel}
\usepackage{tabularx}
\hypersetup{
urlcolor=cyan,
linkcolor=white
}
\usepackage{subfigure}
%% \usepackage{xspace}
\usepackage{}
\usepackage{enumerate}
\usetheme{Antibes}
\setbeamertemplate{sidebar}[right]
\usepackage{listings} % Code formatting
%% \usepackage{framed}
%% \usepackage{booktabs}
\usepackage{tabularx}
\usepackage{marvosym}
\usepackage{tikz}
\usetikzlibrary{shapes}
\usetikzlibrary{arrows}
\usetikzlibrary{calc,positioning}
\lstset{
language=Python,
basicstyle=\ttfamily\scriptsize,
tabsize=2,
breaklines=true,
prebreak=\raisebox{0ex}[0ex][0ex]{\ensuremath{\hookleftarrow}},
frame=single,
showstringspaces=true,
showspaces=false,
keywordstyle=\color{blue},
stringstyle=\color{magenta},
commentstyle=\color{ForestGreen},
literate={\#}{{\textcolor{ForestGreen}{\#}}}1 {@}{{\textcolor{blue}{\MVAt}}}1 {\$}{\vdots}1
}
%--------------------------------------------------------------------------
% Commands
%------------------------------------------------------------------------------
\newcommand*\oldmacro{}%
\let\oldmacro\insertshorttitle%
\renewcommand*\insertshorttitle{%
\oldmacro\hfill%
\insertframenumber\,/\,\inserttotalframenumber}
% Figure Source
\usepackage[absolute,overlay]{textpos}
\setbeamercolor{framesource}{fg=gray}
\setbeamerfont{framesource}{size=\tiny}
\newcommand{\source}[1]{\begin{textblock*}{\paperwidth}(-5pt,\textheight)
\begin{beamercolorbox}[ht=0.5cm,right]{framesource}
\usebeamerfont{framesource}\usebeamercolor[fg]{framesource} Source: {#1}
\end{beamercolorbox}
\end{textblock*}}
%------------------------------------------------------------------------------
% Presentation Title Slide
%--------------------------------------------------------------------------
\title{MIS Example}
\subtitle{CS 2ME3/SE 2AA4}
\author{Sepehr Bayat}
\institute{Department of Computing and Software\\
McMaster University\\ }
\date{January 29}
%--------------------------------------------------------------------------
% Document
% To add notes to the slides use: \note{}
% Add \section{} or \subsection{} for use in table of contents
%--------------------------------------------------------------------------
\begin{document}
% Create Title Slide
\begin{frame}
\maketitle
\end{frame}
\section[Outline]{}
% Create Table of Contents Slide - Outline
\begin{frame}
\frametitle{Outline}
{\hypersetup{linkcolor=black}
\tableofcontents
}
\end{frame}
\section{What is a module?}
\begin{frame}
\frametitle{What is a module?}
\begin{itemize} \item A file with encapsulated code to implement a specific functionality
\item Ex: For designing a website with a login system, we may have a module that deals with logging out
\item A module comes with an "interface"
\item An interface includes things like functions and arguments of the function
\end{itemize}
\end{frame}
% --------------------------------------------------
% --------------------------------------------------
\begin{frame}
\frametitle{What is a MIS?}
\begin{itemize} \item Module Interface Specification
\item Specifices externally observable behaviour of a module
\item Not in language of implementation, but uses mathematical and application language
\item Internal implementations are not included in a MIS
\end{itemize}
\end{frame}
% --------------------------------------------------
% --------------------------------------------------
\section{MIS Template}
\begin{frame}
\frametitle{MIS Template Structure}
\begin{itemize}
\item Uses
\begin{itemize}
\item Imported constants, data types and access programs
\end{itemize}
\item Syntax
\begin{itemize}
\item Exported constants and types
\item Exported functions (access routine interface syntax)
\end{itemize}
\item Semantics
\begin{itemize}
\item State variables
\item State invariants
\item Assumptions
\item Access routine semantics
\item Local functions
\item Local types
\item Local constants
\item Considerations
\end{itemize}
\end{itemize}
\end{frame}
% --------------------------------------------------
% --------------------------------------------------
\section{Example}
\begin{frame}
\frametitle{Example }
Consider implementation of point on two dimensional plane
\begin{itemize}
\item Position P is represented by pair of real numbers (x,y)
\item A triangle is represented by three points
\item Considering we have three points in a 2D surface and we want to know the possibility of having a triangle with the three points and then calculate the perimeter and the area of the triangle.
\end{itemize}
\end {frame}
% --------------------------------------------------
% --------------------------------------------------
%\section{Example}
\begin{frame}
Consider the following triangle:
\begin{figure}[h]
\centering
\includegraphics[width=0.5\textwidth]{triangle.png}
\end{figure}
We are using the following inequality which is called inequality equation to know the possibility of having triangle with three points A, B and C:
\end{frame}
% --------------------------------------------------
% --------------------------------------------------
%\section{Example}
\begin{frame}
\begin{itemize}
\item $$ \mathrm{AB + AC < BC, AC + BC < AB, AB + BC < AC}$$
\end{itemize}
We are calculating the perimeter of the triangle using the following formula:
\begin{itemize}
\item $$\mathrm {P = (AB+AC+BC)}$$
\end{itemize}
We are using the Heron formula to calculate the area of the triangle:
\begin {itemize}
\item $$ \mathrm {\sqrt[2]{P/2(P/2-AB)(P/2-AC)(P/2-BC)}}$$
\end{itemize}
\end {frame}
\subsection{Point ADT Module}
\begin{frame}
\frametitle{Point ADT Module }
\textbf{Template Module}\\
pointADT
\newline
\textbf{Uses}\\
N/A
\newline
\textbf{Syntax}\\
Exported Types:
\newline
pointT = ?
\end{frame}
% --------------------------------------------------
\begin{frame}
\textbf{Exported Access Programs}\\
~\newline
\begin{tabular}{| l | l | l | l |}
\hline
\textbf{Routine name} & \textbf{In} & \textbf{Out} & \textbf{Exceptions}\\
\hline
init & real, real & pointT & ~\\
\hline
xcoord & ~ & real & ~\\
\hline
ycoord & ~ & real & ~\\
\hline
dist & pointT & real & ~\\
\hline
\end{tabular}
\end{frame}
% --------------------------------------------------
\begin{frame}
\textbf{Semantics}
State Variables:
$xc$: real\\
$yc$: real
~\newline
\textbf{State Invariant}
None
~\newline
\textbf{Assumptions}
init() is called for each abstract object before any other access routine is called for that object
\end{frame}
% --------------------------------------------------
\begin{frame}
\frametitle{Point ADT Module}
\textbf{Access Routine Semantics}\\
init($x, y$):
\begin{itemize}
\item transition: $xc, yc := x, y$
\item output: $out := \mathit{self}$
\item exception: none
\end{itemize}
\noindent xcoord():
\begin{itemize}
\item output: $out := xc$
\item exception: none
\end{itemize}
\noindent ycoord():
\begin{itemize}
\item output: $out := yc$
\item exception: none
\end{itemize}
\noindent dist($p$):
\begin{itemize}
\item output: $out := \sqrt{(\mathit{self}.xc - p.\mbox{xcoord()})^2 + (\mathit{self}.yc - p.\mbox{ycoord()})^2}$
\item exception: none
\end{itemize}
\end{frame}
% --------------------------------------------------
\begin{frame}[fragile]
\frametitle{MIS Interface}
From the MIS we can deduce the interface of the code will look like:
\begin{lstlisting}
# Interface
class pointT:
# Constructor
def __init__(self, x, y):
# Selectors
def xcoord(self):
def ycoord(self):
def dist(self, p):
\end{lstlisting}
\end{frame}
% --------------------------------------------------
\begin{frame}
\frametitle{MIS Implementation}
\begin{center}
\textbf{See PointADT.py for implementation.}\\
\end{center}
\end{frame}
% --------------------------------------------------
%
%
%
%
%
%
% --------------------------------------------------
\subsection{TriangleADT Module }
\begin{frame}
\frametitle{TriangleADT }
\textbf{Template Module}\\
TriangleADT
\newline
\textbf{Uses}\\
PointADT
\newline
\textbf{Syntax}\\
Exported Types:
\newline
TriangleADT = ?\\
\end{frame}
% --------------------------------------------------
\begin{frame}
\textbf{Exported Access Programs}\\
~\newline
\tabcolsep=0.09cm
\begin{tabular}{| l | l | l | l |}
\hline
\textbf{Routine name} & \textbf{In} & \textbf{Out} & \textbf{Exceptions}\\
%\hline
%init & \multirow{2}{*}{Note 1} & Triangle & \\ \cline{1-3}
\hline
init & pointT,pointT,pointT&TriangleADT & ~\\
\hline
sides & & &~\\
\hline
inequality theorem & ~ & boolean & LINE~\\
\hline
perimeter of triangle & & real & LINE ~\\
\hline
area of triangle & & real & LINE ~\\
\hline
\end{tabular}
\end{frame}
% --------------------------------------------------
\begin{frame}
\textbf{Semantics}
State Variables:
$p1$: pointT\\
$p2$: pointT\\
$p3$: pointT\\
$AB$: real\\
$AC$ : real\\
$BC$ : real\\
~\newline
\textbf{State Invariant}
None
~\newline
\textbf{Assumptions}
init() is called for each abstract object before any other access routine is called for that object
\end{frame}
% --------------------------------------------------
\begin{frame}
\textbf{Access Routine Semantics}\\
init($p1, p2, p3$):
\begin{itemize}
\item transition: $a, b, c := p1, p2, p3$
\item output: $out := \mathit{self}$
\item exception: none
\end{itemize}
\noindent sides():
\begin{itemize}
\item transition: $AB, AC, BC := pointT.dist(self.a,self.b),$
\\ $pointT.dist(slef.a,self.c), pointT.dist(self.b,self.c)$
\item output: $out := \mathit{self}$
\item exception: none
\end{itemize}
\end {frame}
\begin {frame}
\noindent inequality theorem():
\begin{itemize}
\item output: $$out := \mathrm {(self.AB +self.AC > self.BC,and, self.AB+self.BC }$$
$$ \mathrm {> self.AC, and, self.AC+self.BC >self.AB)}$$
\item exception:
\\ ex := (self.a.xcoord()==self.b.xcoord() ==self.c.xcoord() or
\\ self.a.ycoord()==self.b.ycoord() ==self.c.ycoord()) $\Rightarrow \mbox{LINE})$
\end{itemize}
\end{frame}
% --------------------------------------------------
\begin{frame}
\noindent perimeter of triangle($ $):
\begin{itemize}
\item output: $$out := \mathrm{self.AB+self.AC+self.BC}$$
\item exception:
\\ ex := (self.a.xcoord()==self.b.xcoord() ==self.c.xcoord() or
\\ self.a.ycoord()==self.b.ycoord() ==self.c.ycoord()) $\Rightarrow \mbox{LINE})$
\end{itemize}
\noindent area of triangle($ $):
\begin{itemize}
\item output : $$out :=\mathit {\sqrt[2]{P/2(P/2-self.AB)(P/2-self.AC)(P/2-self.BC)}}$$
\item exception:
\\ ex := (self.a.xcoord()==self.b.xcoord() ==self.c.xcoord() or
\\ self.a.ycoord()==self.b.ycoord() ==self.c.ycoord()) $\Rightarrow \mbox{LINE})$
\end{itemize}
\textbf{Local Constants}\\
P := self.AB+self.AC+self.BC
\end{frame}
% --------------------------------------------------
\begin{frame}[fragile]
\frametitle{MIS Interface}
From the MIS we can deduce the interface of the code will look like:
\begin{lstlisting}
# Interface
class TriangleADT:
#Constructor
def __init__(self, p1, p2, p3):
#Selectors
def sides(self):
def inequality theorem(self):
def perimeter of triangle(self):
def area of triangle(self):
\end{lstlisting}
\end{frame}
% --------------------------------------------------
\begin{frame}
\frametitle{MIS Implementation}
\begin{center}
\textbf{See TriangleADT for implementation.}\\
\end{center}
\end{frame}
% --------------------------------------------------
% -----------------------------------------------------
\begin{frame}
\frametitle{Implementation files}
\begin{itemize}
\item Implementation files PointADT.py and TriangleADT.py can be found in the repo under Tutorial/T4/src
\end{itemize}
\end{frame}
\end{document}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment