0% found this document useful (0 votes)
52 views79 pages

OOSE Chapter 1 & 2

The document discusses object-oriented software engineering and compares traditional and object-oriented approaches. The traditional approach focuses on system functions with rigid procedures, making it inflexible and difficult to change. The object-oriented approach centers on objects that combine data and functionality, making the system more modular, flexible, reusable, and easier to develop, change and maintain. The document then defines classes, objects, and relationships between them. It also outlines some key UML concepts like diagrams, building blocks, and the purpose of use case diagrams.

Uploaded by

Hiziki Tare
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
52 views79 pages

OOSE Chapter 1 & 2

The document discusses object-oriented software engineering and compares traditional and object-oriented approaches. The traditional approach focuses on system functions with rigid procedures, making it inflexible and difficult to change. The object-oriented approach centers on objects that combine data and functionality, making the system more modular, flexible, reusable, and easier to develop, change and maintain. The document then defines classes, objects, and relationships between them. It also outlines some key UML concepts like diagrams, building blocks, and the purpose of use case diagrams.

Uploaded by

Hiziki Tare
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 79

Object Oriented Software Engineering

1 Prepared by Aschalew T 04/18/2021


Traditional S/w dev’t approach Vs OO approach

 Traditional software dev’t approach:


 focuses on the functions of the system
Rigid flow of procedure
Inflexible
 after implemented the system –it is difficult to change
Small changes- high impact
However, this software dev’t approach is effective when the
requirement is specified and the system unlike to change over time

2 Prepared by Aschalew T 04/18/2021


Con’t
Object oriented approach:
-centers on the object, which combines data and functionality
- Modular
-Self-contained
-flexible
-reusability
-Make it easy to :
Develop and deploy
Change and maintain
Understand and use

3 Prepared by Aschalew T 04/18/2021


Class & Object
What
 is an object?
An object is a real-world element in an object–oriented

environment that may have a physical or a conceptual existence.
Each object has its own:

- Identity -distinguish it from other objects in the system .

-Attributes- describe current state of an objects


-Behavior – is specific to the type of objects
This all three things describe an object in an object oriented

programming language env’t.
Objects can be modelled according to the needs of the application.

4 Prepared by Aschalew T 04/18/2021


Con’t
 Objects in a computer programming are not always
physical items.
 Objects are not always visible items.
 What is class?
 We use class to create an object.
 Class describe what an object will be but is not an object
itself.
 Class is the blue print of an object.
 Detail describe and define an object.

5 Prepared by Aschalew T 04/18/2021


Con’t
Creating class:
 Name/type: what is it?
Ex
Employee, Bank Account, Event, Player, Document, Album.
 Attributes/properties/data: what describes it?
Ex
Width, Height, Color, File Type, Length
 Behavior/Operation/Methods: what can it do?

6 Prepared by Aschalew T 04/18/2021


Con’t
Ex
Play, Open, Search, Save, Print, Create, Delete, Close.
Example:
Creating BankAccount Class
Name: BankAcount
Attributes/properties:
-AccountNumber, Balance, DateOpened,
accountType.
Behaviour(operations): Open(), Close(), Deposit(),
Withdraw().

7 Prepared by Aschalew T 04/18/2021


Con’t
 Class/Object:
 The process of creating an object is called instantiation
Class object(instance)
A777 B567
BankAccount $3382 $6682
accountNumber 1/2/2015 7/8/2015
Balance checking saving
dateOpened Open()
accountType Open()
Close() Close()
Deposit() Deposit()
Withdraw() Withdraw()
Open()
Close()
Deposit()
Withdraw()

8 Prepared by Aschalew T 04/18/2021


Con’t
 Each objects(instance) has its own identity and independent
from one an other.
 Each objects has its own data and Behaviour.
 Existing classes in OO languages:
 Most OOP languages provide many pre-written generic
classes:-
- Java class library
-.NET framework BCL
-C++ standard library
- Ruby standard library
-Python standard library

9 Prepared by Aschalew T 04/18/2021


Reading Assignment
The two orthogonal view of software?

10 Prepared by Aschalew T 04/18/2021


Chapter 2
UML

11 Prepared by Aschalew T 04/18/2021


What is the UML
UML stands for
 Unified Modelling Language.
UML is a standard language for specifying, visualizing,

constructing, and documenting the artifacts of software
systems.
UML is a pictorial language used to make software blue

prints.
Formalized in mid 1990’s

-Ivar Jacobson
-Jim RumBaugh
-Grady Booch
Accepted by Object Management Group(OMG).

12 Prepared by Aschalew T 04/18/2021
Con’t

UML is not a programming language but tools can


be used to generate code in various languages
using UML diagrams.
UML diagrams are not only made for developers
but also for business users, common people and
anybody interested to understand the system.
UML has a direct relation with object oriented
analysis and design.

13 Prepared by Aschalew T 04/18/2021


UML Building blocks:
The building blocks of UML can be defined as:
Things
Relationships
 Diagrams
Things: are the most important building blocks of
UML. Things can be:-
oStructural
o Behavioral
oGrouping
oAn notational
14 Prepared by Aschalew T 04/18/2021
Con’t

Structural things:
The Structural things define the static part of the
model. They represent physical and conceptual
elements.
Following are the brief descriptions of the structural
things.
Class: represents set of objects having similar
responsibilities. Class

Interface: It defines a setAttributes


of operations which
specify the responsibility operations
of a class.
15 Prepared by Aschalew T 04/18/2021
Con’t
Interface

 Collaboration: defines interaction between elements.

 Use case:
Use case represents a set of actions performed by a system for a
specific goal.
Use case

16 Prepared by Aschalew T 04/18/2021


Con’t
 Component: describes physical part of a system.

Node:
A node can be defined as a physical element that exists at run time.

17 Prepared by Aschalew T 04/18/2021


Con’t

Behavioral things:
A behavioral thing consists of the dynamic parts
of UML models.
Following are the behavioral things:-
Interaction:
Interaction is defined as a behavior that consists of
a group of messages exchanged among elements to
accomplish a specific task.

18 Prepared by Aschalew T 04/18/2021


Con’t
State machine:
State machine is useful when the state of an object in
its life cycle is important. It defines the sequence of
states an object goes through in response to events.
Events are external factors responsible for state
change.
Grouping things:
Grouping things can be defined as a mechanism to
group elements of a UML model together.
There is only one grouping thing available:
19 Prepared by Aschalew T 04/18/2021
Con’t

Package: is the only one grouping thing available


for gathering structural and behavioral things.

An notational things:


An notational things can be defined as a mechanism
to capture remarks, descriptions, and comments of
UML model elements.
Note: is used to render comments, constraints etc of
an UML element.
20 Prepared by Aschalew T 04/18/2021
Con’t

Relationship :
Relationship is another most important building block of
UML. There are four kinds of relationships available.
Dependency: is a relationship between two things in
which change in one element also affects the other one.

Association: is basically a set of links that connects


elements of an UML model.

21 Prepared by Aschalew T 04/18/2021


Con’t

Generalization: It basically describes inheritance


relationship in the world of objects.

Realization: can be defined as a relationship in which


two elements are connected.

22 Prepared by Aschalew T 04/18/2021


Types of UML Diagrams

UML defines nine types of diagrams:


Use case diagram
Sequence diagram
Activity diagram
Class diagram
Collaboration diagram
Component diagram
Deployment diagram
State chart diagram
Object diagram
23 Prepared by Aschalew T 04/18/2021
1. UML Use Case Diagram

To my knowledge, no other software engineering language


construct as significant as use cases has been adopted so quickly
and so widely among practitioners. I believe this is because use
cases play a role in so many different aspects of software
engineering.

Ivar Jacobson
Founding Father of UML and
Creator of Use Case Diagram
24 Prepared by Aschalew T 04/18/2021
Con’t

What is Use case?


 Use cases are a technique for capturing the
functional requirements of a System .Use cases
work by describing the typical interactions between
the users of a System and the System itself,
providing a narrative of how a System is used.
 Functional requirement are user ‘visible’ features
and are typically initiated by stakeholders of the
system – generate report, login, etc.

25 Prepared by Aschalew T 04/18/2021


Con’t

To model a system the most important aspect is to


capture the dynamic behaviour. To clarify a bit in
details, 
Dynamic behaviour means the behaviour of the
system when it is running /operating.
So only static behaviour is not sufficient to model a
system rather dynamic behaviour is more important
than static behaviour.
In UML there are five diagrams available to model
dynamic nature and use case diagram is one of them.
Use case diagram are consists of actors, use cases
26 Prepared by Aschalew T 04/18/2021
and their relationships.
Cont’

The purpose of use case diagram is to capture the


dynamic aspect of a system. But this definition is too
generic to describe the purpose.
Because other four diagrams (activity, sequence,
collaboration and Statechart) are also having the same
purpose. So we will look into some specific purpose
which will distinguish it from other four diagrams.
Use case diagrams are used to gather the requirements
of a system including internal and external influences.
These requirements are mostly design requirements. So
when a system is analyzed to gather its functionalities
use cases are prepared and actors are identified.
27 Prepared by Aschalew T 04/18/2021
Con’t

 The purposes of use case diagrams can be as follows:


Used to gather requirements of a system.
Used to get an outside view of a system.
Identify external and internal factors influencing the system.
Show the interacting among the requirements are actors.
 An actor is an external entity that interacts with the system.
 A diagram that shows a set of use cases and actors and their
relationships
 A scenario is a sequence of steps describing an interaction
between
a user and a System .
28 Prepared by Aschalew T 04/18/2021
Cont’

 Use case
Use case

 Actor (stick figure for human being )

<<actor>>
The actor
 External actor--------------------------------- name

 System boundary (box)

29 Prepared by Aschalew T 04/18/2021


Use cases
Title- what is the goal?
Actor-who desires it?
Scenario-how is it accomplished?
Use case title:
Short phrase, Active verb
Example:
- Register new member
-Transfer funds
-purchase items
30 Prepared by Aschalew T 04/18/2021
Cont’
-create new page
-collect late payments
-process accounts
Use case:-Actor
Actor: can be primary actor and secondary
Primary Actor- which depict in the left corner of the diagram.
Secondary Actor –some times can be an other system.
Example -user
-customer
-Administrator
- online inventory management system
31 Prepared by Aschalew T 04/18/2021
Con’t
 Use case:-scenario/ Use case documentation
Example:

32 Prepared by Aschalew T 04/18/2021


Use case documentation
Use Case Name Register
Identifier UC1
Description Describe how actors register the patient
Actors Record Operator,Patient
Precondition The actors must have login to system
Post Condition Actors register the patient and patient get service
Extends None
Includes none
Basic course of action:
1. Record Operator click register button.
2. Patient register form display.
3. Record Operator enter patient ID number in provided space on the form
4. Press search button.
5. System validate wither or not the patient information exist in previous time
6. Patient information display on the register form.
7. Record Operator update displayed information such as age and date.
8. Record Operator press register button.
9. System validate wither or not fill the form correctly.
10. Successfully registered message displayed.
11. Record Operator press send button to transmit patient information to OPD room.
12. Use case end.

Alternative course of action:


A6. Patient information didn’t exist in this ID number message display and flow returns to primary Flow step 2.
A7. Record Operator fill the displayed form based on Patient response.
A10. No correct input formatmessage display.
A11. Flow returns to primary flow step 2.

33 Prepared by Aschalew T 04/18/2021


Use case diagram

34 Prepared by Aschalew T 04/18/2021


 Interaction diagrams describe how groups of
objects collaborate in some behavior.
a sequence diagram captures the behavior of a single
scenario
A sequence diagram shows interaction between
objects over specific period time.
Better to understand the interaction b/n objects
UML sequence diagrams are a dynamic modeling
technique.
35 Prepared by Aschalew T 04/18/2021
Cont’

Representing lifetime of an object.


It shows how the objects interact with others in a
particular scenario of a use case.
Sequence diagram does not describe the entire
system but it describe particular scenario.
Sequence diagrams are sometimes called event
diagrams or event scenarios.
The boxes across top of the diagram represent
classifiers or their instances; typically use cases,
objects, classes or actors.
36 Prepared by Aschalew T 04/18/2021
Cont’

Long dashed line from the top box implies lifeline


or timeline of an object
Arrow indicates the message flow from one object
to another object.
Dashed arrow indicates the message response
small box in long dashed line are activation or
method call box
Sequence diagram example for order management
system.
37 Prepared by Aschalew T 04/18/2021
UML Sequence diagram

38 Prepared by Aschalew T 04/18/2021


Cont’

 The above sequence diagram contains four


objects(customer, order, specailorder,normalorder)
 The above diagram has shown the message sequence for
SpecialOrder object and the same can be used in case of
NormalOrder object.
 The first call is sendOrder () which is a method of Order
object. The next call is confirm () which is a method of
SpecialOrder object and the last call is Dispatch ()
which is a method of SpecialOrder object.
 So here the diagram is mainly describing the method
calls from one object to another and this is also the
actual scenario when the system is running
39 Prepared by Aschalew T 04/18/2021
Cont’

40 Prepared by Aschalew T 04/18/2021


3. UML Activity diagram
Activity diagram is another important diagram in
UML to describe dynamic aspects of the system.
Activity diagram is basically a flow chart to
represent the flow form one activity to another
activity.
The activity can be described as an operation of the
system.
The control flow is drawn from one operation to
another.
ThisPrepared
flow can be sequential, branched or
by Aschalew T
41 04/18/2021
concurrent.
Cont’
Activity diagrams deals with all type of flow
control by using different elements like fork, join
etc.
The basic purposes of activity diagrams are similar
to other four diagrams.
It captures the dynamic behavior of the system.
Other four diagrams are used to show the message
flow from one object to another but activity
diagram is used to show flow from one activity to
another.
42Activity is a particular operation of the system.
Prepared by Aschalew T 04/18/2021
Cont’

Its purpose are:


 Draw the activity flow of a system.
 Describe the sequence from one activity to another.
 Describe the parallel, branched and concurrent
flow of the system.
Activity diagrams are mainly used as a flow chart
consists of activities performed by the system.
But it is not exactly a flowchart additional
capabilities that distinguish activity diagram like
branching, parallel flow etc.
43 Prepared by Aschalew T 04/18/2021
Cont’
Before drawing an activity diagram we should
identify the following elements:
 Activities
 Association
 Conditions
 Constraints
Activity diagram example for order management
system

44 Prepared by Aschalew T 04/18/2021


UML Activity diagram

45 Prepared by Aschalew T 04/18/2021


The above diagram is drawn with the four main
activities:
Send order by the customer
Receipt of the order
Confirm order
Dispatch order
After receiving the order request condition checks
are performed to check if it is normal or special
order. After the type of order is identified dispatch
activity is performed and that is marked as the
termination of the process.
46 Prepared by Aschalew T 04/18/2021
4.UML State chart diagram
State chart diagram is one of the five UML
diagrams used to model dynamic nature of a
system.
They define different states of an object during its
lifetime.
It describes different states of a component in a
system.
The states are specific to a component/object of a
system.
State chart diagrams are useful to model reactive
47 Prepared by Aschalew T 04/18/2021
systems.
Cont’
Reactive systems can be defined as a system that
responds to external or internal events.
State chart diagram describes the flow of control
from one state to another state.
States are defined as a condition in which an object
exists and it changes when some event is triggered.
The most important purpose of State chart diagram
is to model life time of an object from
creation to termination.
48 Prepared by Aschalew T 04/18/2021
Cont’
 Following are the main purposes of using State chart
diagrams:
To model dynamic aspect of a system.
To model life time of a reactive system.
To describe different states of an object during its life
time.
Define a state machine to model states of an object.
 Before drawing a State chart diagram we must have
clarified the points:
Identify important objects to be analyzed.
Identify the states.
49 Identify
 the
Prepared by events.
Aschalew T 04/18/2021
UML State chart diagram

50 Prepared by Aschalew T 04/18/2021


51 Prepared by Aschalew T 04/18/2021
5. UML Collaboration diagram

Collaboration diagram is another form of


interaction diagram.
The purpose of collaboration diagram is similar to
sequence diagram.
But the specific purpose of collaboration
diagram is to visualize the organization of
objects and their interaction.
It shows the object organization
Here in collaboration diagram the method call
sequence is indicated by some numbering
technique
The
52
number indicates how the methods are called
Prepared by Aschalew T 04/18/2021
UML Collaboration diagram

53 Prepared by Aschalew T 04/18/2021


6. UML Class diagram

The class diagram is a static diagram. It represents


the static view of an application.
Class diagram is not only used for visualizing,
describing and documenting different aspects of a
system but also for constructing executable code of
the software application.
The class diagram describes the attributes and
operations of a class and also the constraints
imposed on the system.
54 Prepared by Aschalew T 04/18/2021
Cont’

The class diagrams are widely used in the modelling


of object oriented systems because they are the only
UML diagrams which can be mapped directly with
object oriented languages.
The class diagram shows a collection of classes,
interfaces, associations, collaborations and
constraints.
It is also known as a structural diagram.
The purpose of the class diagram is to model the
static view of an application.
Most popular UML diagram in the coder community.
55 Prepared by Aschalew T 04/18/2021
The main symbols shown on class diagrams are:
Classes
represent the types of data themselves
Associations
represent linkages between instances of
classes
Attributes
are simple data found in classes and their
instances
Operations
represent the functions performed by the
classes and their instances
56
Generalizations
Prepared by Aschalew T 04/18/2021
group classes into inheritance hierarchies
Cont’

The following points should be remembered while drawing a



class diagram:
The name of the class diagram should be meaningful to describe the
aspect of the system.
Each element and their relationships should be identified in advance.

Responsibility (attributes and methods) of each class should be

clearly identified.
For each class minimum number of properties should be specified.

Use notes when ever required to describe some aspect of the diagram.

Because at the end of the drawing it should be understandable to the
developer/coder.

57 Prepared by Aschalew T 04/18/2021


Visibility

public (+) – external objects can access the member


private (-) – only internal methods can access the
member
protected (#) – only internal methods, or methods of
specialized objects can access the member
Produt

- serialNumber
- name
# price

+ buy()
+ display()
- swap(x:int,y: int)

58 Prepared by Aschalew T 04/18/2021


UML Class diagram

59 Prepared by Aschalew T 04/18/2021


Cont’

First of all Order and Customer are identified as


the two elements of the system and they have a one
to many relationship because a customer can have
multiple orders.
We would keep Order class is an abstract class and
it has two concrete classes (inheritance
relationship) SpecialOrder and NormalOrder.
The two inherited classes have all the properties as
the Order class. In addition they have additional
functions like dispatch () and receive ().
60 Prepared by Aschalew T 04/18/2021
7. UML Object diagram

Object diagrams are derived from class diagrams


so object diagrams are dependent upon class
diagrams.
Object diagrams represent an instance of a class
diagram.
Object diagrams are used to render a set of objects
and their relationships as an instance.
The purposes of object diagrams are similar to
class diagrams.
The difference is that a class diagram
61 represents
Prepared by Aschalewan
T abstract model consists of classes
04/18/2021
Cont’
 But an object diagram represents an instance at a
particular moment which is concrete in nature.
 It means the object diagram is more close to the actual
system behavior.
 The purpose is to capture the static view of a system at a
particular moment.
 purpose of the object diagram can be summarized as:
- Forward and reverse engineering.
- Object relationships of a system
- Static view of an interaction.
- Understand object behavior and their relationship from
practical perspective
62 Prepared by Aschalew T 04/18/2021
Cont’

a single object diagram cannot capture all the


necessary instances or rather cannot specify all
objects of a system.
So the solution is:
First, analyze the system and decide which
instances are having important data and association.
Second, consider only those instances which will
cover the functionality.
Third, make some optimization as the numbers of
instances are unlimited.
63 Prepared by Aschalew T 04/18/2021
Cont’
Before drawing an object diagrams the following
things should be remembered and understood
clearly:
Object diagrams are consist of objects.
The link in object diagram is used to connect objects.
Objects and links are the two elements used to
construct an object diagram.
The following things to be decided before starting
the construction of the diagram:
The object diagram should have a meaningful name
to indicate its purpose.
64 Prepared by Aschalew T 04/18/2021
Cont’

The most important elements are to be identified.


The association among objects should be clarified.
Values of different elements need to be captured to
include in the object diagram.
Add proper notes at points where more clarity is
required.

65 Prepared by Aschalew T 04/18/2021


UML Object diagram

66 Prepared by Aschalew T 04/18/2021


Cont’

The above diagram is an instance of the system at a


particular time of purchase. It has the following
objects Customer,Order,SpecialOrder,NormalOrder
the customer object (C) is associated with three
order objects (O1, O2 and O3). These order objects
are associated with special order and normal order
objects (S1, S2 and N1).
The customer is having the following three orders
with different numbers (12, 32 and 40) for the
particular time considered.
67 Prepared by Aschalew T 04/18/2021
Cont’

If order, special order and normal order objects are


observed then we will find that they are having
some values.
For orders the values are 12, 32, and 40 which
implies that the objects are having these values
for the particular moment
The same is for special order and normal order
objects which are having number of orders as 20,
30 and 60.
If a different time of purchase is considered then
these
68
values
Prepared by Aschalewwill
T change accordingly. 04/18/2021
8. UML Component Diagram
Overview:
Component diagrams are used to model
physical aspects of a system.
Physical aspects are the elements like
executables, libraries, files, documents etc.
So component diagrams are used to visualize
the organization and relationships among
components in a system. These diagrams are
also used to make executable systems.
69 Prepared by Aschalew T 04/18/2021
Cont’
Purpose:
It does not describe the functionality of the system
but it describes the components used to make those
functionalities.
Component diagrams can also be described as a
static implementation view of a system.
A single component diagram cannot represent the
entire system but a collection of diagrams are used to
represent the whole.
So the purpose of the component diagram can be
summarized
70
as:
Prepared by Aschalew T 04/18/2021
Cont’

Visualize the components of a system.


Describe the organization and relationships of the
components.
How to draw Component Diagram?
This diagram is very important because without it
the application cannot be implemented efficiently.
Before drawing a component diagram the
following artifacts are to be identified clearly:
 Files used in the system.
Libraries and other artifacts relevant to the
71
application.
Prepared by Aschalew T 04/18/2021
Cont’

Use a meaningful name to identify the component


for which the diagram is to be drawn.
Prepare a mental layout before producing using
tools.
Use notes for clarifying important points.
The following is a component diagram for order
management system.
Here the artifacts are files. So the diagram shows
the files in the application and their relationships.
In actual the component diagram also contains
72
libraries,
Prepared by
folders
Aschalew T
etc. 04/18/2021
UML Component diagram

73 Prepared by Aschalew T 04/18/2021


9. UML Deployment Diagram

Overview:
Deployment diagrams are used to visualize the
topology of the physical components of a system
where the software components are deployed.
So deployment diagrams are used to describe the
static deployment view of a system. Deployment
diagrams consist of nodes and their relationships.

74 Prepared by Aschalew T 04/18/2021


Cont’

Purpose
Deployment diagrams are used for describing the hardware
components where software components are deployed.
Component diagrams and deployment diagrams are closely
related.
UML is mainly designed to focus on software artifacts of a
system. But these two diagrams are special diagrams used
to focus on software components and hardware
components.
The purpose of deployment diagrams can be described as:
 Visualize hardware topology of a system.
Describe the hardware components used to deploy software
75components.
Prepared by Aschalew T 04/18/2021
Cont’

How to draw Deployment Diagram?


A deployment diagram consists of nodes. Nodes
are nothing but physical hardware's used to deploy
the application.
So before drawing a deployment diagram the
following artifacts should be identified:
Nodes
Relationships among nodes

76 Prepared by Aschalew T 04/18/2021


Cont’
The following deployment diagram is a
sample to give an idea of the deployment view
of order management system. Here we have
shown nodes as:
Monitor
Modem
Caching server
Server

77 Prepared by Aschalew T 04/18/2021


Cont’

The application is assumed to be a web based


application which is deployed in a clustered
environment using server 1, server 2 and server 3.
The user is connecting to the application using
internet. The control is flowing from the caching
server to the clustered environment.
So the following deployment diagram has been
drawn considering all the points mentioned above:

78 Prepared by Aschalew T 04/18/2021


UML Deployment diagram

79 Prepared by Aschalew T 04/18/2021

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy