Python Lecture 31,32
Python Lecture 31,32
Lecture – 31 & 32
DISCOVER . LEARN . EMPOWER
Abstract Data Types 1
COURSE OBJECTIVES
2
COURSE OUTCOMES
On completion of this course, the students shall be able to:-
Identify and interpret the basics syntax of Python Programming Language and be fluent
CO1
in the use of Python.
Understanding the data structures like Lists, Tuples, Sets and Dictionaries in
CO3
programming paradigms of Python Programming Language.
Ability to create practical and contemporary applications using Functions, Abstract Data
CO4
Types and Modules in Python.
Implementation of Python based applications using file input and output operations in
CO5
Python Programming.
3
Unit-3 Syllabus
Unit-3 Contact Hours: 12 Hours
Abstract Data Abstract data types and ADT interface in Python Programming.
Types
Classes Class definition and other operations in the classes, Special Methods (such as _init_,
_str_, comparison methods and Arithmetic methods etc.), Class Example, Inheritance,
Inheritance and OOP.
File I/O File input and output operations in Python Programming Exceptions and Assertions.
5
Contents to be covered
Abstract Data Types (ADT) in Python
6
Abstract Data Types (ADT) & Interface in Python
In this PPT, we will learn about ADT but before understanding what ADT is let us consider different in-built
data types that are provided to us. Data types such as int, float, double, long, etc. are considered to be in-built
data types and we can perform basic operations with them such as addition, subtraction, division,
multiplication, etc. Now there might be a situation when we need operations for our user-defined data type
which have to be defined. These operations can be defined only as and when we require them. So, in order to
simplify the process of solving problems, we can create data structures along with their operations, and such
data structures that are not in-built are known as Abstract Data Type (ADT).
Abstract Data type (ADT) is a type (or class) for objects whose behavior is defined by a set of values and a
set of operations. The definition of ADT only mentions what operations are to be performed but not how
these operations will be implemented. It does not specify how data will be organized in memory and what
algorithms will be used for implementing the operations. It is called “abstract” because it gives an
implementation-independent view.
The process of providing only the essentials and hiding the details is known as abstraction.
7
The user of data type does not need to
know how that data type is implemented,
for example, we have been using
Primitive values like int, float, char data
types only with the knowledge that these
data type can operate and be performed on
without any idea of how they are
implemented.
So a user only needs to know what a data
type can do, but not how it will be
implemented. Think of ADT as a black
box which hides the inner structure and
design of the data type. Now we’ll define
three ADTs namely List ADT, Stack ADT,
8
Queue ADT.
1. List ADT
• The data is generally stored in key sequence in a list which has a head structure consisting of count, pointers and address of compare
function needed to compare the data in the list.
• The data node contains the pointer to a data structure and a self-referential pointer which points to the next node in the list.
• remove() – Remove the first occurrence of any element from a non-empty list.
• Encapsulation: ADTs provide a way to encapsulate data and operations into a single unit, making it easier
to manage and modify the data structure.
• Abstraction: ADTs allow users to work with data structures without having to know the implementation
details, which can simplify programming and reduce errors.
• Data Structure Independence: ADTs can be implemented using different data structures, which can make it
easier to adapt to changing needs and requirements.
• Information Hiding: ADTs can protect the integrity of data by controlling access and preventing
unauthorized modifications.
• Modularity: ADTs can be combined with other ADTs to form more complex data structures, which can
increase flexibility and modularity in programming.
13
Disadvantages:
• Overhead: Implementing ADTs can add overhead in terms of memory and processing, which can affect
performance.
• Complexity: ADTs can be complex to implement, especially for large and complex data structures.
• Learning Curve: Using ADTs requires knowledge of their implementation and usage, which can take time
and effort to learn.
• Limited Flexibility: Some ADTs may be limited in their functionality or may not be suitable for all types
of data structures.
• Cost: Implementing ADTs may require additional resources and investment, which can increase the cost of
development.
14
Summary
Abstract Data Types (ADT): An Abstract Data Type (ADT) is a high-level description of a set of operations
that can be performed on a data structure, independent of its implementation.
Focus on Operations: ADTs emphasize what operations can be performed on data rather than how they are
implemented.
Encapsulation: ADTs encapsulate data and operations into a unified concept, promoting modularity.
Characteristics of ADTs: Encapsulation and Information Hiding: ADTs encapsulate data and hide
implementation details, emphasizing the separation of concerns.
Defined Operations: ADTs define a set of operations that can be performed on instances of the data type.
Implementation Flexibility: Different implementations of an ADT can provide the same set of operations.
Interface in Python: An interface in Python is a collection of abstract methods that define a contract for
classes implementing the interface. Interface methods are declared without providing an implementation.
Enforcing Contracts: Classes implementing an interface must provide concrete implementations for all the
15
methods defined in the interface.
Assessment Questions
Q Define Abstract Data Types (ADTs) and explain their purpose in software design.
Q Provide an example of a real-world scenario where an ADT could be beneficial.
Q Discuss the key characteristics of Abstract Data Types, focusing on encapsulation and information hiding.
Q How do ADTs contribute to modularity in software development?
Q Explain the concept of implementation flexibility in the context of Abstract Data Types.
Q Provide an example of how different implementations of the same ADT can coexist.
Q Define what an interface is in Python and describe its role in object-oriented programming.
Q How does an interface contribute to the concept of contractual agreement in classes?
Q Discuss the significance of abstract methods in Python interfaces.
Q Provide an example of an interface with abstract methods.
Q Explain how multiple inheritance is facilitated by interfaces in Python.
16
THANK YOU
For queries
Email: [email protected]
17