Mašinski fakultet Mostar, juni 2013. 

 

 

OBJEKTNO PROGRAMIRANJE - AutoLISP 

OBJECT ORIENTED PROGRAMMING - AutoLISP 

Amir Hajdarević 

Mašinski fakultet Mostar 

 

Ključne riječi:

 AutoCAD, AutoLISP, programiranje. 

 

SAŽETAK: 

 

Objektno programiranje bazira se na logoco ljudskog uma. Neki smatraju da je ono počelo 1967. sa člankom 
Dahl-a u knjizi „Strukturirano programiranje“. Objektni programer počinje sa softverskim modeliranjem. Prvo 
se  ustanovi  domen  problema  kome  pripada  naš  problem  i  pravi  se  njegov  model.  Ključni  dio  objektnog 
programiranja je da u podacima ne stoje samo osobine entiteta već i operacije nad tim entitetom. AutoLISP je 
poseban  dio  LISP  programskog  jezika,  koji  se  isporučuje  unutar  programskog  paketa  za  projektovanje 
AutoCAD.  AutoLISP  omogućava  korisnicima  AutoCAD-a  da  pišu  i  kreiraju  makroe  i  funkcije  u  višem 
programskom jeziku.  Kroz ovaj rad urađen je primjer objektnog programiranja zupčanika u AutoLISP-u. 

 

Keywords:

 AutoCAD, AutoLISP, programming. 

 

ABSTRACT: 
 

Object  oriented  programming  is  based  on  logo  human  mind.  Some  believe  that  it  began  in  1967.  with  Dahl 
article  in  his  book  "Structured  programming".  Object  programmer  starts  with  software  modeling.  First,  we 
determine the domain of the problem which belongs to our problem and make to his model. A key part of object 
oriented programming is that the data are not only characteristics of the entities, but also the operation of this 
entity. AutoLISP is a special part of the LISP programming language, which comes within the software package 
for  the  design  of  AutoCAD.  AutoLISP  enables  AutoCAD  users  to  write  and  create  macros  and  functions  in  a 
higher  programming  language.  In  this  seminar  work  was  prepared  as  an  example  of  object-oriented 
programming gear in AutoLISP. 

 

1. UVOD 

 
Osnovni problem strukturiranog programiranja je to što se bavi samo dekompozicijom alogoritama, te 
su se kroz historiju programerske struke pojavljivala tri problema: problem kompatibilnosti, problem 
kontinuiteta  i  problem  mogućnosti  višestruke  upotrebe  (  reusability  ).  Zbog  navedenih  problema 
moralo  je  doći  do  izmjena  u  metodologiji  i  to  u  obliku  objektne  metodologije  i  objektnog 
programiranja.  Objektni  programer  počinje  sa  softverskim  modeliranjem.  Nakon  što  se  ustanovi 
domen problema kome pripada naš problem, pravi se njegov model. Problem sata koji uvijek radi je 
karakteristika  objektnog  programiranja  i  samo  ono  nudi  rješenje  tog  problema.  Programer  uočava 
entitete  i  povezuje  ih  u  klase  entiteta  i  tek  onda  ih  softverski  modelira.  Npr.  u  problemu 

Ax 

=  b 

uočavamo tri entiteta: A, b, x. Ključni dio objektnog programiranja je da u podacima ne stoje samo 
osobine entiteta već i operacije nad  tim entitetom. Kada se završi rad sa jednom klasom počinje rad na 
drugoj  klasi  i  tek  kada  ovo  sve  završi  programer  se  vraća  na  početni  problem.  Klasa  objekta 
predstavlja  model  klase  entiteta  koji  obuhvata  objekte  sa  istom  strukturom  i  ponašanjem.  Opisno 
rečeno,  ono  sto  je  objekat  za  klasu,  to  je  promjenljiva  za  tip  podataka.  Objektno  programiranje  je 
podešeno tako da više nikada ove klase nećemo pisati već ih možemo uvjek koristiti. Kod objektnog 
programiranja objekti međusobno vrše interakciju. Dio klase naziva se objekat ili instanca klase.  

Amir Hajdarević, - Objektno programiranje - AutoLISP 

 

2                                                         

Mašinski fakultet Mostar, juni 2013. 

 

 

2. TEMELJI OBJEKTNOG PROGRAMIRANJA 
 

Objektna metodologija kao i svaka druga metodologija stoji na određenim principima tj. ima određene 
osnove.  Ona  se  zasniva  na  nekoliko  osnovnih  principa  koji  su  bili  poznati  čak  i  prije  objektnog 
programiranja u određenom obliku, samo što tada nisu igrali bitnu ulogu u izradi softvera. Osnovni 
elementi objektnog

 

programiranja su: 

-

 

Apstrakcija, to je veoma opšti postupak, na kome je zasnovana naša logika, poznat i hiljadama 
godina  prije  nastanka  objektne  metodologije  i  predstavlja  izdvajanje  odnosno  uočavanje 
bitnog  i  zanemarivanje  nebitnog.  Postoji  i  u  strukturnom  programiranju  gdje  svaki  obučen 
programer vidi potprograme kao apstraktne elemente.  

-

 

Skrivanje  informacija,  je  odavno  jedan  od  ključnih  principa  objektnog  programiranja.  On 
podrazumjeva  da  klijentu  ne  treba  da  budu  poznati  detalji  realizacije  programa  jer  on  može 
tada  da  zloupotrebi  naš  kod  u  neke  svrhe  da  bi,  kada  izađe  novija  verzija,  nastao  veliki 
problem. 

-

 

Inkapsulacija  je  tehnika  kojom  se  pri  realizaciji  objedinjavaju  deskriptivne  i  dinamičke 
osobine  modela  entiteta  (  u  našem  slučaju  objekata  )  poštujući  pri  tome  princip  skrivanja 
informacija. 

-

 

Modularnost

 

je tehnika razlaganja složenog softverskog sistema u domenu implementacije na 

jednostavnije elemente koje imaju unutrašnju logku. 

-

 

Polimorfizam

 

je osobina,  ili pak mogućnost da se softverska komponenta ponaša zavisno od 

konteksta ili okolnosti. Tako se polimorfno mogu ponašati objekti, promjenljive pa i funkcije. 

-

 

Veze između klasa su u okviru problema gdje postoji više klasa veoma bitna komponenta jer 
egzistira  veliki  broj  međuzavisnih  klasa.  Vezama  se  ostvaruje  uređenje  apstrakcija.  Najveću 
važnost ima nasleđivanje tj. izvođenje klase iz klase. 

-

 

Nasljeđivanje  predstavlja  prenošenje  osobina  jedne  klase  na  drugu  uz  mogućnost  dopune  i 
modifikacije bez izmjene izvornog koda prve klase. Ono omogućuje npr. da osnovnoj funkciji 
tastera, koja je ista za sve, dodamo i novu, nama potrebnu, funkciju bez mjenjanja njegovog 
koda. 
 

2.1. Objekat i klasa 
 

Postoji mnogo definicija i klasa i objekata ali jedno što im je zajedničko jeste da kažu da su klasa i 
objekat u stvari pojmovi. Pojam je po svojoj prirodi misao o bitnim karakteristikama predmeta kojih 
mi  u  realnosti  prepoznajemo.  To  je  ono  što  mi  u  stvari  modeliramo.  Najbitniji  pojmovi  u 
programiranju jesu pojam za stvar, proces, osobinu i na kraju pojam za odnos. Također veoma bitna 
stvar  jesu  i  odnosi  među  pojmovima.  Pojam  može  biti  individualni  ili  opšti  pojam.  Logika  se  bavi 
opštim,  bitnim  osobinama  problema,  ali  mi  sa  stanovišta  programiranja  ih  možemo  posmatrati 
konkretnije  jer  ih  vezujemo  samo  za  pitanje  problema.  Od  problema  do  problema  mi  posmatramo 
druge karakteristike koje su nam u tom trenutku relevantne. Tako se svi autori slažu da su najbitnije 
osobine  objekta:  indentitet,  stanje  i  ponašanje.  U  objektnom  sistemu  svaki  objekat  je  jedinstven. 
Identitet

 

predstavlja osobinu objekta da se izdvaja od ostalih objekata i po kome je on prepoznatljiv. 

Ako uzmemo problem dvije matrice vidjet cemo koliko je bitan pojam identiteta. Imamo dve matrice: 

 

Postavlja  se  pitanje  da  li  su  ovo  dvije  ekvivalentne  matrice  ili  je  ovo  samo  prva  matrica  prepisana. 
Zbog ovakvih situacija bitno je da se objekti ( u ovom slučaju matrice ) označe nekim imenom tj da im 
se  dodjeli  neki  identitet.  Za  razliku  od  objektnog,  procedurno  programiranje  nije  zasnovano  na 
stanjima  već  na  vrijednostima  koje  se  primjenjuju.  Stanje

 

je  dio  prošlosti  i  sadašnjosti  objekta 

neophodan  za  određivanje  njegovog  budućeg  ponašanja.  Dakle  objekat

 

je  softverski  model 

individualnog  pojma  za  stvar  ili  proces  zasnovan  na  stanjima  i  koji  sadrži  osobine  relevantne  za 
domen problema. 

background image

Amir Hajdarević, - Objektno programiranje - AutoLISP 

 

4                                                         

Mašinski fakultet Mostar, juni 2013. 

 

 

3.1. AutoLISP 
 

Kao jedan od najboljih i najčešće korištenih alata za objektno programiranje pokazao se Autodesk-ov  
softverski CAD (Computer Aided Design) alat AutoCAD. Prednost AutoCAD-a je mogućnost izrade 
vlastitih aplikacija uz pomoć ugrađenog uređivača (editora) AutoLISP / Visual LISP. Uz već ugrađene 
funkcije  AutoCAD-a,  uz  pomoć  Visual  LISP  editora  moguće  je  programirati  funkcije  prilagođene 
vlastitim potrebama. Ovdje vidimo prednost ovog programskog jezika za nauke koje isključivo koriste 
AutoCAD kao glavni alat za izradu grafičkih prikaza. AutoLISP omogućava korisnicima AutoCAD-a 
da pišu i kreiraju makroe i funkcije u višem programskom jeziku, što je izuzetno povoljno za grafičke 
aplikacije. LISP je lagan za učenje i korištenje i veoma je fleksibilan. Usprkos rastućoj popularnosti 
novih  programskih  jezika  (npr.  VBA  i  .NET),  AutoLISP  je  još  uvijek  glavni  programski  jezik 
AutoCAD-a.  LISP  je  predstavnik  aplikativnih  ili  funkcijskih  programskih  jezika.  U  okviru  njega  ne 
postoje  komande,  već  se  sve  svodi  na  izračunavanje  raznih  funkcija.  AutoLISP  podržava  nekoliko 
vrsta  podataka,  i  to:  liste,  simbole,  tekstualne  stringove,  realne  i  integer  brojeve,  opise  fajlova, 
AutoCAD-ove  nazive  fajlova,  AutoCAD-ove  selekcione  setove,  kao  i  odgovarajuće  funkcije  koje 
omogućavaju  bazično  programiranje  za  dvodimenzionalne  i  trodimenzionalne  grafičke  aplikacije. 
Neke rutine se automatski učitavaju kada se izaberu (markiraju) iz standardnih menija AutoCAD-a, a 
ostale  rutine  koje  su  potrebne  korisniku  moraju  da  se  učitaju  pomoću  komande  APPLOAD.  Do  ove 
komande se dolazi putem 

Manage > Load aplication 

i kao rezultat toga se pojavljuje okvir za dijalog, 

koji je prikazan na slici 2. 
 

 

Slika 2: Dodavanje objekta pomoću AutoLISP-a 

Mnogi  od  AutoLISP  programa  koriste  funkciju  DEFUN  da  kreiraju  neku  funkciju.  Posle  učitavanja 
fajla pomoću komande APPLOAD, ta nova funkcija može da se pozove kao i svaka druga AutoCAD-
ova komanda, kucajući njen naziv u komandnoj liniji. Na primer, ako je korisnik kreirao funkciju pod 
nazivom  gear  (koristeći  u  njenoj  sintaksi  i  funkciju  DEFUN),  onda  se  ta  funkcija  poziva,  nakon 
učitavanja, sa: 
 

Command: gear 

Želiš da pročitaš svih 13 strana?

Prijavi se i preuzmi ceo dokument.

Ovaj materijal je namenjen za učenje i pripremu, ne za predaju.

Slični dokumenti