From 435840cef00c596d9e608f9eb2d96f522ea8505a Mon Sep 17 00:00:00 2001 From: hardythe1 Date: Tue, 5 May 2015 14:21:39 +0530 Subject: add books --- ...hapter_8_Data_Abstraction_through_Classes.ipynb | 809 +++++++++++++++++++++ 1 file changed, 809 insertions(+) create mode 100755 sample_notebooks/NitamoniDas/chapter_8_Data_Abstraction_through_Classes.ipynb (limited to 'sample_notebooks/NitamoniDas/chapter_8_Data_Abstraction_through_Classes.ipynb') diff --git a/sample_notebooks/NitamoniDas/chapter_8_Data_Abstraction_through_Classes.ipynb b/sample_notebooks/NitamoniDas/chapter_8_Data_Abstraction_through_Classes.ipynb new file mode 100755 index 00000000..1083b19a --- /dev/null +++ b/sample_notebooks/NitamoniDas/chapter_8_Data_Abstraction_through_Classes.ipynb @@ -0,0 +1,809 @@ +{ + "metadata": { + "name": "", + "signature": "sha256:dbbd8ed92141bcc804ff2fbeacf8bb85f122dc6e196e1d830291a4a449a3a439" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "heading", + "level": 1, + "metadata": {}, + "source": [ + "Chapter 8: Data Abstraction through Classes and User-Defined Data Types " + ] + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Program Source Code 8.1, page no: 208" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "class Super:\n", + " def __init__(self):\n", + " self.__IntegerData=None #private member\n", + " #public functions\n", + " def SetData(self,i):\n", + " self.__IntegerData=i #refer to IntegerData\n", + " def ShowData(self):\n", + " print \"Data is \",self.__IntegerData,' '\n", + "\n", + "ob1=Super()\n", + "ob2=Super()\n", + "ob1.SetData(1000)\n", + "ob2.SetData(2000)\n", + "ob1.ShowData()\n", + "ob2.ShowData()" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Data is 1000 \n", + "Data is 2000 \n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Program Source Code 8.2, page no:211" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "class X:\n", + " def __init__(self):\n", + " self.a=None #private members\n", + " self.b=None #private members\n", + " \n", + "#no structure type present in python \n", + "x = X()\n", + "\n", + "x.a=0\n", + "x.b=1\n", + "print \"x.a=\",x.a,\",x.b=\",x.b" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "x.a= 0 ,x.b= 1\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Program Source Code 8.3, page no:214" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "class Fraction:\n", + " \n", + " def SetValue(self,a,b): #public functions\n", + " self.__num=a \n", + " self.__denom=b \n", + " def GetValue(self,a,b):\n", + " a=self.__num\n", + " b=self.__denom\n", + " \n", + "f=Fraction()\n", + "n=input(\"Enter n: \") #user input\n", + "d=input(\"Enter d: \") #user input\n", + "print \"enter the numerator and denominator: \", ' ',n,d\n", + "\n", + "f.SetValue(n,d) #call function SetValue\n", + "print \"Numerator value set: \", ' ',n\n", + "print \"Denominator value set: \", ' ',d\n", + "f.GetValue(n,d) #call function GetData\n", + "print \"Numerator value retrieved: \", ' ',n\n", + "print \"Denominator value retrieved: \", ' ',d" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter n: 3\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter d: 4\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "enter the numerator and denominator: 3 4\n", + "Numerator value set: 3\n", + "Denominator value set: 4\n", + "Numerator value retrieved: 3\n", + "Denominator value retrieved: 4\n" + ] + } + ], + "prompt_number": 3 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Program Source Code 8.4, page no:216" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "class SimpleClass:\n", + " def __init__(self):\n", + " self.__i=None #private member\n", + " \n", + " def __init__(self):\n", + " self.__i=500 #constructor\n", + " \n", + " def SetData(self,d):\n", + " self.__i=d\n", + " \n", + " def GetData(self):\n", + " return self.__i\n", + " \n", + "#Initializing\n", + "s1=SimpleClass()\n", + "s2=SimpleClass()\n", + "print \"s1 has data: \",s1.GetData()\n", + "print \"s2 has data: \",s2.GetData()\n", + "s1.SetData(1000) #function call\n", + "s2.SetData(2000)\n", + "print \"s1 has data: \",s1.GetData(),' '\n", + "print \"s2 has data: \", s2.GetData(),' '\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "s1 has data: 500\n", + "s2 has data: 500\n", + "s1 has data: 1000 \n", + "s2 has data: 2000 \n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Program Source Code 8.5, page no:217" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "class SimpleClass:\n", + " __IntegerData=None\n", + " def __init__(self,data=None):\n", + " if data==None:\n", + " self.__IntegerData=500 #default constructor\n", + " else:\n", + " self.__IntegerData=data #parameterised constructor\n", + " \n", + " def SetData(self,d):\n", + " self.__IntegerData=d\n", + " \n", + " def GetData(self):\n", + " return self.__IntegerData\n", + " \n", + "#Initializing\n", + "s1=SimpleClass()\n", + "s2=SimpleClass()\n", + "s3=SimpleClass(400)\n", + "s4=SimpleClass(600)\n", + "print \"s1 has data: \",s1.GetData(),' '\n", + "print \"s2 has data: \",s2.GetData(),' '\n", + "print \"s3 has data: \",s3.GetData(),' '\n", + "print \"s4 has data: \",s4.GetData(),' '\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "s1 has data: 500 \n", + "s2 has data: 500 \n", + "s3 has data: 400 \n", + "s4 has data: 600 \n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Program Source Code 8.6, page no:218" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "class Fraction: \n", + " def_init_num=None #private members\n", + " def_init_denom=None #private members\n", + " def __init__(self,a=0,b=1):\n", + " self.__num=a\n", + " self.__denom=b\n", + " print \"Numerator set inside constructor\",' ',n\n", + " print \"Denominator set inside constructor\",' ',d\n", + " \n", + " def SetValue(self,a,b):\n", + " self.__num=a\n", + " self.__denom=b\n", + " def GetValue(self,a,b):\n", + " a= self.__num\n", + " b= self.__denom\n", + " return a,b\n", + " \n", + " def __del__(self): #destructor\n", + " pass\n", + " \n", + "n=input(\"Enter n: \") #user input\n", + "d=input(\"Enter d: \") #user input\n", + "print \"Please enter value of numerator and denominator: \",' ',n,d\n", + "f=Fraction(n,d)\n", + "f.GetValue(n,d)\n", + "print \"Numerator value retrieved: \", ' ',n\n", + "print \"Denominator value retrieved: \", ' ',d" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter n: 3\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter d: 4\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Please enter value of numerator and denominator: 3 4\n", + "Numerator set inside constructor 3\n", + "Denominator set inside constructor 4\n", + "Numerator value retrieved: 3\n", + "Denominator value retrieved: 4\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Program Source Code 8.7, page no:221" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "class Fraction:\n", + " \n", + " def __init__(self,a=0,b=1): #constructor\n", + " self.__num=a\n", + " self.__denom=b\n", + " print \"Numerator set inside constructor: \",self.__num\n", + " print \"Denominator set inside constructor: \",self.__denom \n", + " \n", + " def GetValue(self,a,b):\n", + " return self.__num,self.__denom\n", + "n=input(\"Enter n: \") #user input\n", + "d=input(\"Enter d: \") #user input\n", + "print \"Please enter the value of the numerator and denominator: \",n,d\n", + "f=Fraction(n,d)\n", + "n,d=f.GetValue(n,d)\n", + "print \"Numerator value retrieved: \", ' ',n\n", + "print \"Denominator value retrieved: \", ' ',d\n", + "n=input(\"Please enter the value of numerator only: \")\n", + "f1=Fraction(n)\n", + "n,d=f1.GetValue(n,d)\n", + "print \"Numerator value retrieved: \", ' ',n\n", + "print \"Denominator value retrieved: \", ' ',d\n", + "print 'ok..now I will create a fraction-no input please'\n", + "f2=Fraction()\n", + "n,d=f2.GetValue(n,d)\n", + "print \"Numerator value retrieved: \", ' ',n\n", + "print \"Denominator value retrieved: \", ' ',d" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter n: 3\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter d: 4\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Please enter the value of the numerator and denominator: 3 4\n", + "Numerator set inside constructor: 3\n", + "Denominator set inside constructor: 4\n", + "Numerator value retrieved: 3\n", + "Denominator value retrieved: 4\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Please enter the value of numerator only: 3\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Numerator set inside constructor: 3\n", + "Denominator set inside constructor: 1\n", + "Numerator value retrieved: 3\n", + "Denominator value retrieved: 1\n", + "ok..now I will create a fraction-no input please\n", + "Numerator set inside constructor: 0\n", + "Denominator set inside constructor: 1\n", + "Numerator value retrieved: 0\n", + "Denominator value retrieved: 1\n" + ] + } + ], + "prompt_number": 3 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Program Source Code 8.8, page no:223" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "class Fraction:\n", + " def_init_num=None #private members\n", + " def_init_denom=None #private members\n", + " \n", + " def __init__(self,anotherFraction=None): \n", + " if anotherFraction==None: #normal constructor\n", + " self.__num=anotherFraction\n", + " self.__denom=anotherFraction\n", + " else: #copy constructor\n", + " self.__num=anotherFraction.self.__num\n", + " self.__denom=anotherFraction.self.__denom\n", + " \n", + " \n", + " #public functions\n", + " def SetValue(self,a,b):\n", + " self.__num=a\n", + " self.__denom=b#refer to IntegerData\n", + " def GetValue(self,a,b):\n", + " a=self.__num\n", + " b=self.__denom\n", + " return a,b\n", + " \n", + "f=Fraction()\n", + "n=input(\"Enter n: \") #user input\n", + "d=input(\"Enter d: \") #user input\n", + "print \"enter the numerator and denominator: \", ' ',n,d\n", + "\n", + "f.SetValue(n,d) #call function SetValue\n", + "print \"Numerator value set: \", ' ',n\n", + "print \"Denominator value set: \", ' ',d\n", + "f.GetValue(n,d) #call function GetData\n", + "print \"Numerator value retrieved: \", ' ',n\n", + "print \"Denominator value retrieved: \", ' ',d\n", + "print \"Now a second clone copy is being created: \",''\n", + "f1=f\n", + "f1.GetValue(n,d)\n", + "print \"Clone's numerator value retrieved: \", ' ',n\n", + "print \"Clone's denominator value retrieved: \", ' ',d" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter n: 5\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter d: 6\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "enter the numerator and denominator: 5 6\n", + "Numerator value set: 5\n", + "Denominator value set: 6\n", + "Numerator value retrieved: 5\n", + "Denominator value retrieved: 6\n", + "Now a second clone copy is being created: \n", + "Clone's numerator value retrieved: 5\n", + "Clone's denominator value retrieved: 6\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Program Source Code 8.9, page no:229" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "def MyNewHandler():\n", + " print \"Sorry operator new failed to allocate memory\"\n", + " exit(0)\n", + " \n", + "def _set_new_handler(s):\n", + " s()\n", + "#In python there is no in-built _set_new_handler function, so i made this function and passed MyNewHandler function as a parameters\n", + "_set_new_handler(MyNewHandler)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Sorry operator new failed to allocate memory\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Program Source Code 8.10, page no:230" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from ctypes import * \n", + "class Fraction: \n", + " def __init__(self,a=0,b=1): \n", + " if isinstance(a,int): \n", + " c = c_int(a) \n", + " d = c_int(b) \n", + " self.__num = pointer(c) \n", + " self.__denom = pointer(d) \n", + " print 'constructor sets numerator = ', self.__num[0] , ', denominator = ', self.__denom[0] \n", + " else:\n", + " c=c_int(a.__num[0])\n", + " d = c_int(a.__denom[0])\n", + " self.__num = pointer(c) \n", + " self.__denom = pointer(d)\n", + " print 'copy constructor sets numerator = ', self.__num[0] , ', denominator = ', self.__denom[0] \n", + " \n", + " def __del__(self): \n", + " print 'destructor deallocates numerator = ', self.__num[0] , ', denominator = ', self.__denom[0] \n", + " \n", + "n = input(\"Please enter values of numerator: \") \n", + "d = input(\"Please enter values of denominator: \") \n", + "f = Fraction(n,d) \n", + "print 'Please enter another set of ' \n", + "n = input(\"numerator: \") \n", + "d = input(\"denominator: \") \n", + "print 'Creating fraction *pf : ' \n", + "pf = Fraction(n,d) \n", + "print 'Now a clone copy (f2) created from *pf: ' \n", + "f2 = Fraction(pf)\n", + "print 'Now another clone copy (*pf2) created from f:' \n", + "pf2 = Fraction(f) \n", + "print '*pf2 is being destroyed:' \n", + "del pf2\n", + "print '*pf is being destroyed:' \n", + "del pf \n", + "print 'now objects f2 and f automatically destroyed : '" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Please enter values of numerator: 3\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Please enter values of denominator: 4\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "constructor sets numerator = 3 , denominator = 4\n", + "Please enter another set of \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "numerator: 5\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "denominator: 6\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Creating fraction *pf : \n", + "constructor sets numerator = 5 , denominator = 6\n", + "Now a clone copy (f2) created from *pf: \n", + "copy constructor sets numerator = 5 , denominator = 6\n", + "Now another clone copy (*pf2) created from f:\n", + "copy constructor sets numerator = 3 , denominator = 4\n", + "*pf2 is being destroyed:\n", + "*pf is being destroyed:\n", + "now objects f2 and f automatically destroyed : \n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Program Source Code 8.11, page no:234" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "def Memfail(self,s):\n", + " print \"Sorry Unable to allocate memory\"\n", + " sys.exit(0)\n", + "\n", + "MAX_SIZE = 60 + 1\n", + "\n", + "MAX_SIZE=[[0 for col in range(MAX_SIZE)]for row in range(MAX_SIZE)]\n", + "nChar=0\n", + "chArr=\"Hello\"\n", + "\n", + "print \"Please input a string( 60 characters max.): \",chArr\n", + "\n", + "nChar=len(chArr)+1\n", + "szStr=chArr\n", + "print \"required memory space for\",nChar,\n", + "print \"characters\"\n", + "chArr=szStr #string copy\n", + "szStr=chArr\n", + "print \"String copied in allocated space: \",szStr\n", + "print \"Memory space dellocated\"\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Please input a string( 60 characters max.): Hello\n", + "required memory space for 6 characters\n", + "String copied in allocated space: Hello\n", + "Memory space dellocated\n" + ] + } + ], + "prompt_number": 4 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Program Source Code 8.12, page no:236" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "class Fraction:\n", + " \n", + " def __init__(self,a=0,b=1): #constructor\n", + " self.__num=a\n", + " self.__denom=b\n", + " \n", + " def __del__(self): #destructor\n", + " pass\n", + " \n", + " def GetValue(self,a,b):\n", + " a=self.__num\n", + " b=self.__denom\n", + " return self.__num,self.__denom\n", + "n=4\n", + "d=5\n", + "f=Fraction(4,5)\n", + "n,d=f.GetValue(n,d)" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 2 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Program Source Code 8.13, page no:239" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "class X:\n", + " __sa=20 #initialising static member\n", + " a = None\n", + " def __init__(self):\n", + " self.a=None #public member\n", + " def f(self,b):\n", + " a=30\n", + " print \"Global a= \",b\n", + " print \"Local a= \",a\n", + " print \"Nonstatic member a= \",self.a\n", + " print \"static member sa= \",self.__sa\n", + "\n", + "a=10\n", + "\n", + "aXobj=X()\n", + "aXobj.a=40\n", + "aXobj.f(a)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Global a= 10\n", + "Local a= 30\n", + "Nonstatic member a= 40\n", + "static member sa= 20\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [], + "language": "python", + "metadata": {}, + "outputs": [] + } + ], + "metadata": {} + } + ] +} \ No newline at end of file -- cgit