summaryrefslogtreecommitdiff
path: root/C++_from_the_Ground/Chapter_12.ipynb
diff options
context:
space:
mode:
authorJovina Dsouza2014-07-08 17:19:20 +0530
committerJovina Dsouza2014-07-08 17:19:20 +0530
commit84eaa5fbfb3090e912ebe12de1906b7c0bdde908 (patch)
treef98362fb5e4e43848c150834c3937dc4bde1e176 /C++_from_the_Ground/Chapter_12.ipynb
parent80751050da776de062000a7d2a5b4e045bfbc9f8 (diff)
downloadPython-Textbook-Companions-84eaa5fbfb3090e912ebe12de1906b7c0bdde908.tar.gz
Python-Textbook-Companions-84eaa5fbfb3090e912ebe12de1906b7c0bdde908.tar.bz2
Python-Textbook-Companions-84eaa5fbfb3090e912ebe12de1906b7c0bdde908.zip
adding book
Diffstat (limited to 'C++_from_the_Ground/Chapter_12.ipynb')
-rw-r--r--C++_from_the_Ground/Chapter_12.ipynb904
1 files changed, 904 insertions, 0 deletions
diff --git a/C++_from_the_Ground/Chapter_12.ipynb b/C++_from_the_Ground/Chapter_12.ipynb
new file mode 100644
index 00000000..a29c9b4d
--- /dev/null
+++ b/C++_from_the_Ground/Chapter_12.ipynb
@@ -0,0 +1,904 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:0b4a52abc3f3246965d1e59241352e867e78e448510ae25e91b7d38dc4dcc202"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "<h1>Chapter 12: A Closer Look at Classes<h1>"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "<h3>Example 12.1, Page Number: 274<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "\n",
+ "\n",
+ "class myclass:\n",
+ " __a=None\n",
+ " __b=None\n",
+ " def __init__(self,i,j):\n",
+ " self.__a=i\n",
+ " self.__b=j\n",
+ " def sum(self,x): #Friend function\n",
+ " return sum1(x)\n",
+ " \n",
+ "def sum1(x): \n",
+ " return x._myclass__a +x._myclass__b #accessing private members\n",
+ "\n",
+ "#Variable declaration\n",
+ "n=myclass(3,4)\n",
+ "\n",
+ "#Result\n",
+ "print n.sum(n)\n",
+ "\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "7\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "<h3>Example 12.2, Page Number: 275<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "\n",
+ "class c1:\n",
+ " __status=None\n",
+ " def set_status(self,state):\n",
+ " self.__status=state\n",
+ " \n",
+ "class c2:\n",
+ " __status=None\n",
+ " def set_status(self,state):\n",
+ " self.status=state\n",
+ " \n",
+ "#Friend function \n",
+ "def idle(a,b):\n",
+ " if a._c1__status or b._c2__status :\n",
+ " return 0\n",
+ " else:\n",
+ " return 1\n",
+ " \n",
+ "#variable declarations\n",
+ "def IDLE(): #Constants\n",
+ " return 0\n",
+ "def INUSE():\n",
+ " return 1\n",
+ "x=c1()\n",
+ "y=c2()\n",
+ "\n",
+ "x.set_status(IDLE())\n",
+ "y.set_status(IDLE())\n",
+ "\n",
+ "if idle(x,y):\n",
+ " print \"Screen Can Be Used.\"\n",
+ " \n",
+ "x.set_status(INUSE())\n",
+ "\n",
+ "if idle(x,y):\n",
+ " print \"Screen Can Be Used.\"\n",
+ "else:\n",
+ " print \"Pop-up In Use.\"\n",
+ " \n",
+ " "
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Screen Can Be Used.\n",
+ "Pop-up In Use.\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "<h3>Example 12.3, Page Number: 277<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "\n",
+ "\n",
+ "def IDLE(): \n",
+ " return 0\n",
+ "def INUSE():\n",
+ " return 1\n",
+ "\n",
+ "class c1:\n",
+ " __status=None\n",
+ " def set_status(self,state):\n",
+ " self.__status=state\n",
+ " def idle(self,b): #now a member of c1\n",
+ " if self.__status or b._c2__status :\n",
+ " return 0\n",
+ " else:\n",
+ " return 1\n",
+ " \n",
+ "class c2:\n",
+ " __status=None #IDLE if off INUSE if on screen\n",
+ " def set_status(self,state):\n",
+ " self.status=state\n",
+ " \n",
+ "#Variable declarations \n",
+ "x=c1()\n",
+ "y=c2()\n",
+ "\n",
+ "x.set_status(IDLE())\n",
+ "y.set_status(IDLE())\n",
+ "\n",
+ "if idle(x,y):\n",
+ " print \"Screen Can Be Used.\"\n",
+ " \n",
+ "x.set_status(INUSE())\n",
+ "\n",
+ "if idle(x,y):\n",
+ " print \"Screen Can Be Used.\"\n",
+ "else:\n",
+ " print \"Pop-up In Use.\"\n",
+ " "
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Screen Can Be Used.\n",
+ "Pop-up In Use.\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "<h3>Example 12.4, Page Number: 278<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "\n",
+ "\n",
+ "import time,string\n",
+ "\n",
+ "class timer:\n",
+ " __seconds=None\n",
+ " \n",
+ " def __init__(self,t1,t2=None):\n",
+ " if t2==None:\n",
+ " if isinstance(t1,int): #seconds specified as an integer\n",
+ " self.__seconds=t1\n",
+ " else: #seconds specified as a string\n",
+ " self.__seconds=string.atoi(t1)\n",
+ " else: #time in minutes and seconds\n",
+ " self.__seconds=t1*60+t2\n",
+ " \n",
+ " def run(self):\n",
+ " t1=time.clock()\n",
+ " while (time.clock()-t1)<self.__seconds:\n",
+ " a=10\n",
+ " print time.clock()-t1\n",
+ " \n",
+ " \n",
+ "a=timer(10)\n",
+ "b=timer(\"20\")\n",
+ "c=timer(1,10)\n",
+ "a.run() #count 10 seconds\n",
+ "b.run() #count 20 seconds\n",
+ "c.run() #count 1 minute,10 seconds\n",
+ " "
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "10.0000009774\n",
+ "20.0000009774"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "70.0000004887"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "<h3>Example 12.5, Page Number: 280<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "\n",
+ "import time,string\n",
+ "\n",
+ "class timer:\n",
+ " __seconds=None\n",
+ " \n",
+ " def __init__(self,t1,t2=None):\n",
+ " if t2==None:\n",
+ " if isinstance(t1,int): #seconds specified as an integer\n",
+ " self.__seconds=t1\n",
+ " else: #seconds specified as a string\n",
+ " self.__seconds=string.atoi(t1)\n",
+ " else: #time in minutes and seconds\n",
+ " self.__seconds=t1*60+t2\n",
+ " \n",
+ " def run(self):\n",
+ " t1=time.clock()\n",
+ " while (time.clock()-t1)<self.__seconds:\n",
+ " a=10\n",
+ " print time.clock()-t1\n",
+ " \n",
+ "a=timer(10)\n",
+ "a.run()\n",
+ "\n",
+ "print \"Enter number of seconds: \"\n",
+ "str=\"20\"\n",
+ "b=timer(str) #initialize at the run time\n",
+ "c.run()\n",
+ "\n",
+ "print \"Enter minutes and seconds: \"\n",
+ "min=1\n",
+ "sec=10\n",
+ "c=timer(min,sec) #initialize at the run time\n",
+ "c.run()\n",
+ " "
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "10.0000004887\n",
+ "Enter number of seconds: \n",
+ "70.0000009774"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "Enter minutes and seconds: \n",
+ "70.0000009774"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "<h3>Example 12.6, Page Number: 282<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "\n",
+ "class myclass:\n",
+ " __a=None #private members\n",
+ " __b=None\n",
+ " def setab(self,i,j): #publc functons\n",
+ " self.__a=i\n",
+ " self.__b=j\n",
+ " def showab(self):\n",
+ " print \"a is \",self.__a\n",
+ " print \"b is \",self.__b\n",
+ "\n",
+ "#Variable declaration\n",
+ "ob1 = myclass()\n",
+ "ob2 = myclass()\n",
+ "\n",
+ "#Intalizing\n",
+ "ob1.setab(10,20)\n",
+ "ob2.setab(0,0)\n",
+ "\n",
+ "print \"ob1 before assignment: \"\n",
+ "ob1.showab()\n",
+ "print \"ob2 before assignment: \"\n",
+ "ob2.showab()\n",
+ "\n",
+ "ob2 = ob1 #assign ob1 to ob2\n",
+ "\n",
+ "#Result\n",
+ "print \"ob1 after assignment: \"\n",
+ "ob1.showab()\n",
+ "print \"ob2 after assignment: \"\n",
+ "ob2.showab()\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "ob1 before assignment: \n",
+ "a is 10\n",
+ "b is 20\n",
+ "ob2 before assignment: \n",
+ "a is 0\n",
+ "b is 0\n",
+ "ob1 after assignment: \n",
+ "a is 10\n",
+ "b is 20\n",
+ "ob2 after assignment: \n",
+ "a is 10\n",
+ "b is 20\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "<h3>Example 12.7, Page Number: 283<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "\n",
+ "from copy import deepcopy\n",
+ " \n",
+ "class OBJ:\n",
+ " def set_i(self,x):\n",
+ " self.__i=x\n",
+ " def out_i(self):\n",
+ " print self.__i,\n",
+ " \n",
+ "def f(x):\n",
+ " x=deepcopy(x)\n",
+ " x.out_i() #outputs 10\n",
+ " x.set_i(100) #this affects only local copy\n",
+ " x.out_i() #outputs 100\n",
+ " \n",
+ "#Variable declaration\n",
+ "o=OBJ()\n",
+ "o.set_i(10)\n",
+ "f(o) \n",
+ "o.out_i() #still outputs 10, value of i unchanged\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "10 100 10\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "<h3>Example 12.8, Page Number: 284<h3> "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "\n",
+ "\n",
+ "class myclass: \n",
+ " def __init__(self,i):\n",
+ " self.__val=i\n",
+ " print \"Constructing\"\n",
+ " def __del__(self):\n",
+ " print \"Destructing\"\n",
+ " def getval(self):\n",
+ " return self.__val\n",
+ " \n",
+ "def display(ob):\n",
+ " print ob.getval()\n",
+ "\n",
+ "#Varable declaration\n",
+ "a=myclass(10)\n",
+ "\n",
+ "display(a)\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Constructing\n",
+ "Destructing\n",
+ "10\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "<h3>Example 12.9, Page Number: 286<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "\n",
+ "\n",
+ "from ctypes import *\n",
+ "\n",
+ "class myclass:\n",
+ " def __init__(self,i):\n",
+ " print \"Allocating p\"\n",
+ " self.p=pointer(c_int(i))\n",
+ " def __del__(self):\n",
+ " print \"Freeing p\"\n",
+ " def getval(self):\n",
+ " return self.p[0]\n",
+ " \n",
+ "def display(ob):\n",
+ " print ob.getval()\n",
+ "\n",
+ "#Variable declaration\n",
+ "a=myclass(10)\n",
+ "\n",
+ "display(a)\n",
+ " "
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Allocating p\n",
+ "10\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "<h3>Example 12.10, Page Number: 287<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ " \n",
+ "from ctypes import *\n",
+ "class myclass:\n",
+ " def __init__(self,i):\n",
+ " print \"Allocating p\"\n",
+ " self.p=pointer(c_int(i))\n",
+ " def __del__(self):\n",
+ " print \"Freeing p\"\n",
+ " def getval(self):\n",
+ " return self.p[0]\n",
+ " \n",
+ "def display(ob):\n",
+ " print ob[0].getval()\n",
+ "\n",
+ "#Variable declaration\n",
+ "a=[]\n",
+ "a.append(myclass(10))\n",
+ "\n",
+ "display(a)\n",
+ " "
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Freeing p\n",
+ "Allocating p\n",
+ "10\n"
+ ]
+ }
+ ],
+ "prompt_number": 5
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "<h3>Example 12.11, Page Number: 288<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "\n",
+ "\n",
+ "class sample:\n",
+ " __s=None\n",
+ " def show(self):\n",
+ " print self.__s\n",
+ " def set(self,str):\n",
+ " self.__s=str\n",
+ "\n",
+ "#Return an object of type sample\n",
+ "def input():\n",
+ " str=sample()\n",
+ " instr = \"Hello\" #User input\n",
+ " str.set(instr)\n",
+ " return str\n",
+ "\n",
+ "#Variable declaration\n",
+ "ob=sample()\n",
+ "\n",
+ "#assign returned object to ob\n",
+ "ob=input()\n",
+ "\n",
+ "#Result\n",
+ "ob.show()\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Hello\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "<h3>Example 12.12, Page Number: 289<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "\n",
+ "\n",
+ "class sample:\n",
+ " __s=None\n",
+ " def __init__(self):\n",
+ " self.__s=0\n",
+ " def __del__(self): \n",
+ " print \"Freeing p\"\n",
+ " def show(self):\n",
+ " print self.__s\n",
+ " def set(self,str):\n",
+ " self.__s=str\n",
+ " \n",
+ "#This function takes one object parameter\n",
+ "def input():\n",
+ " str=sample()\n",
+ " instr=\"Hello\" #User input\n",
+ " str.set(instr)\n",
+ " return str\n",
+ "\n",
+ "#Variable declaration\n",
+ "ob=sample()\n",
+ "\n",
+ "#assign returned object to ob\n",
+ "ob=input()\n",
+ "\n",
+ "#Result\n",
+ "ob.show()\n",
+ "\n",
+ "\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Freeing p\n",
+ "Freeing p\n",
+ "Hello\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "<h3>Example 12.13, Page Number: 292<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "\n",
+ "\n",
+ "class myclass:\n",
+ " __p=None\n",
+ " def __init__(self,i):\n",
+ " if isinstance(i,int):\n",
+ " print \"Allocating p\"\n",
+ " self.__p=i\n",
+ " else:\n",
+ " print \"Copy constructor called\"\n",
+ " self.__p=i.getval()\n",
+ " def __del__(self): \n",
+ " print \"Freeing p\"\n",
+ " def getval(self):\n",
+ " return self.__p\n",
+ " \n",
+ "#This function takes one object parameter\n",
+ "def display(ob):\n",
+ " print ob.getval()\n",
+ "\n",
+ "#Variable declaration\n",
+ "ob=myclass(10)\n",
+ "\n",
+ "#Result\n",
+ "display(ob)\n",
+ "\n",
+ "\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Allocating p\n",
+ "10\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "<h3>Example 12.14, Page Number: 294<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "\n",
+ "\n",
+ "\n",
+ "class myclass:\n",
+ " __p=None\n",
+ " def __init__(self,i):\n",
+ " if isinstance(i,int):\n",
+ " print \"Allocating p\"\n",
+ " self.__p=i\n",
+ " else:\n",
+ " print \"Copy constructor called\"\n",
+ " self.__p=i.getval()\n",
+ " def __del__(self): \n",
+ " print \"Freeing p\"\n",
+ " def getval(self):\n",
+ " return self.__p\n",
+ " \n",
+ "\n",
+ "#Variable declaration\n",
+ "a=myclass(10) #calls normal constructor\n",
+ "b=myclass(a) #calls copy constructor\n",
+ "\n",
+ "\n",
+ "\n",
+ "\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Allocating p\n",
+ "Copy constructor called\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "<h3>Example 12.15, Page Number: 295<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "\n",
+ "\n",
+ "class myclass:\n",
+ " def __init__(self,i=0):\n",
+ " if isinstance(i,int):\n",
+ " print \"Normal constructor\"\n",
+ " else:\n",
+ " print \"Copy constructor\"\n",
+ "\n",
+ "\n",
+ "#Variable declaration\n",
+ "a=myclass() #calls normal constructor\n",
+ "\n",
+ "f=myclass()\n",
+ "a=myclass(f) #Invoke copyconstructor\n",
+ "\n",
+ "\n",
+ "\n",
+ "\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Normal constructor\n",
+ "Normal constructor\n",
+ "Copy constructor\n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "<h3>Example 12.16, Page Number: 297<h3>"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "\n",
+ "\n",
+ "class c1:\n",
+ " def __init__(self):\n",
+ " self.__i=None\n",
+ " def load_i(self,val):\n",
+ " self.__i=val\n",
+ " def get_i(self):\n",
+ " return self.__i\n",
+ " \n",
+ "#Variable declaration \n",
+ "o=c1()\n",
+ "\n",
+ "o.load_i(100)\n",
+ "\n",
+ "#Result\n",
+ "print o.get_i()\n"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "100\n"
+ ]
+ }
+ ],
+ "prompt_number": 13
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [],
+ "language": "python",
+ "metadata": {},
+ "outputs": []
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file