Академический Документы
Профессиональный Документы
Культура Документы
Catedra ATI
Lucrarea de curs
la APOO
Chişinău 2010
1. Analiza și Proiectarea Obiect Orientată.
Analiza şi proiectarea obiect orientată (APOO) este o tehnică din ingenerie
software care modelează sistema ca un grup de obiecte interactive. Fiecare obiect
reprezintă o entititate in sitema modelată şi este caracterizată de clasa sa, statutul
(datele), si comportamentul sau. Diverse modele pot fi create pentru a reprezinta
structură statică, comportament dinamic şi run-time deployment a acestor obiecte în
colaborare. Există diverse notaţii de reprezentare a acestor modele, ca spre exemplu
Unified Modeling Language (UML). Analiza obiect orientată (AOO) aplică modelul
obiectual în analiza cerinţelor funcţionale a sistemei. Proiectarea obiect orientă (POO)
eleaborează modele de analiză pentru a produce implementarea specificaţiilor. AOO se
concentrează asupra funcționalitații ce le v-a avea sistemului, POO cum vor fi realizate
aceste funcționalități în sistemă.
3. Sarcina lucrarii.
Crearea unei specificatii și apicații de tip server ce ar realiza un sistem de tip
'Sistem distribuit de fișiere' (DFS). Metoda de realizare a procesului de dezvotare este
ales la dorința.
Bibliografie
http://en.wikipedia.org/wiki/Object-oriented_design
[Resursă electronică]
http://en.wikipedia.org/wiki/Objectoriented_ analysis_and_design
[Resursă electronică]
http://en.wikipedia.org/wiki/Distributed_file_system
[Resursă electronică]
Learning UML 2.0, Kim Hamilton
[Resursă electronică]
Anexa A
Codul Sursă
****************************************
'''
Created on Sep 7, 2009
@author: gheorghies
unit fsclass.py
'''
import os.path
class Node():
def __init__(self, name):
self.__parent = None
self.__child = []
self.__name = name
self.__resources = {}
def get_name(self):
'''node name'''
return self.__name
def add_child(self, child):
'''add a child path'''
if child.__class__ != Node:
raise 'Not a node!!!'
self.__child.append(child)
child.__parent = self
def del_child(self, child):
'''delete child path'''
if child.__class__ != Node:
raise 'Not a node!!!'
if self.__child.__contains__(child):
self.__child.remove(child)
def get_child(self, name):
'''get child path object from name if not exist then None'''
for ch in self.__child:
if ch.__name == name:
return ch
return None
def child_exist(self, name):
for ch in self.__child:
if ch.__name == name:
return True
return False
def get_parent(self):
return self.__parent
def add_resource(self, name, path):
'''add resource'''
# check if file exist !!!
if os.path.isfile(path):
self.__resources[name] = path
return True
return False
def delete_resource(self, name):
'''delete resource'''
del self.__resources[name]
def resource_exist(self, name):
'''check if resource with name 'name' exist'''
if self.__resources.has_key(name):
return True
return False
def get_resource_file(self,name):
if self.resource_exist(name):
return self.__resources[name]
def ln(self):
'''white space delimited child names'''
return ' '.join(ch.__name for ch in self.__child) + '\n'
def lr(self):
'''white space delimited resource names'''
return ' '.join(rs for rs in self.__resources.keys()) + '\n'
'''
Created on Sep 7, 2009
@author: gheorghies
unit sesion.py
'''
import commandparser
import sender
class Sesion():
def __init__(self,user_pass_dict,root,getport):
self.__flaglogged = False
self.__user_pass_dict = user_pass_dict
self.__cmdparser = commandparser.CommandParser()
self.__curent_dir = root
self.__getport = getport
def exec_comand(self,command):
'''command --> Code + command'''
try:
cmdtuple = self.__cmdparser.getParams(command)
except:
return '0 Bad command\n'
# if not cmdtuple:
# return '0 Bad command\n'
# logging
if not self.__flaglogged:
if len(cmdtuple) != 4:
return '0 Bad command\n'
if cmdtuple[0] == 'usr' and cmdtuple[2] == 'pwd':
if not self.__user_pass_dict.has_key(cmdtuple[1]) or not
self.__user_pass_dict[cmdtuple[1]] == cmdtuple[3]:
return '0 Logon failed\n'
else:
self.__flaglogged = True
return '1 OK\n'
else:
return '0 Bad command\n'
#ls
if cmdtuple[0] == 'ln':
return self.__curent_dir.ln()
#cd
elif cmdtuple[0] == 'cd':
if cmdtuple[1] == '.':
if self.__curent_dir.get_parent() != None:
self.__curent_dir = self.__curent_dir.get_parent()
return '1 OK\n'
else:
return '0 Bad command\n'
if self.__curent_dir.child_exist(cmdtuple[1]):
self.__curent_dir = self.__curent_dir.get_child(cmdtuple[1])
return '1 OK\n'
else:
return '0 No such folder\n'
elif cmdtuple[0] == 'lr':
return self.__curent_dir.lr()
#get
elif cmdtuple[0] == 'get':
if self.__curent_dir.resource_exist(cmdtuple[1]):
snd =
sender.Sender(self.__getport,self.__curent_dir.get_resource_file(cmdtuple[
1]))
snd.start()
return str(self.__getport) + '\n'
else:
return '0 Bad command\n'
else:
return '0 Bad command\n'