alımlı

Toyota Yaris LPG Dönüşümü

1811/2007

Evet, uzun zamandır muhtemelen memlekette bir ilk olan Yaris LPG Dönüşümü hakkında yazmıyordum. Yazacak bayağı konu birikti, işte yazıyorum.

LPG’yi arife günü yaptırtmıştım. Dolayısıyla Ramazan Bayramı’nda bol bol arabayla dolaştım. 4-5 kişiyle arabayla bol bol dolaştım. Yokuşlardan kalkarken bir zorlanma oluyordu ve zaman zaman motor ben istop ediyorum demeden pat diye istop ediyordu. Araba sadece 2 kişi varken bile yokuşlarda kalkış tam bir bela oldu.

Bu sorun üzerine ertesi cumartesi tekrar Olgun LPG’nin yolunu tuttuk. Zaten arabanın tekrar konfigürasyonu için bir hafta sonra getirin denmişti. Problemi oradan çalışan Adnan’a ilettim. Adnan konfigürasyonda bir ayar değiştirdi. Yokuşta kısa bir test yaptım sorun düzelmiş gibi geldi. Fakat tekrar yola çıkınca aynı sorunun süregeldiğini gördüm. Bir muhabbet sırasında, 2001 model Corolla’sına LPG taktıran Saygın arkadaşım kendisinde de benzer problemin olduğunu, lpg’nin yanmaya karşı daha hassas olduğunu ve bujileri değiştirince sorunun düzeldiğini bildirdi. Bu işler olup biterken bir problem daha farkettim. Çağlayan’dan Kağıthane yokuşunu bilenler bilir. Uzun ve dikçe bir yokuştur. Bu yokuştan ayağım hafifçe frene basılı iniyordum. Fakat ciddi bir şekilde arabayı silkeliyor kendi öne atmaya çalışıyordu.

Nitekim, bujileri değiştirip son durumu tekrar göremeden Küçükyalı Atatürk Caddesi’nde talihsiz bir kaza oldu. Mecburen araba Kartal Derindere yolunu tuttu ve 1 hafta orada yattı. Çıkarken bujilerini de değiştirmelerini istedim. Bujiler değişti, hava filtresi de çok dolmuş o da değişti. Arabanın benzinli gidişi bile toparladı. LPG de yokuşta kalkışlardaki durma problemi de büyük ölçüde ortadan kalkmış gibi görünüyordu. Arabanın yokuş inişlerindeki silkeleme problemini tekrar test etme fırsatım olmadan tekrar geçen cumartesi Olgun LPG’nin yolunu tuttum.

Yokuş aşağı olan sorunlarımı ilettim.  Dedilerki bu enjektör bu arabanın motoru için fazla biz bunu yeşil başlı enjektör takacağız. Daha önce niye takmadınız dediğimde ise daha önce ellerinde olmadığını söylediler. Bosch enjektör değişti. Yeni takılan enjektör de sıfır gözüküyordu. Araba otomatik kalibrasyona sokuldu. Fakat defalarca denemelere rağmen kalibrasyon tamamlanmadan motor duruyordu. Uzun uğraşlar sonunda manuel kalibrasyon yapıldı.

Bir hafta kadar gaz ile arabayı sürdüm. Tam bir düş kırıklığı yaşadım. Araba düz yolda bile 1200 devire çıkana kadar kıpırdamıyordu. Şehir içinde arabayı benzinle kullanmak zorunda kaldım. Bir hafta süresince gözlemlediğim durum benzinle 10 km. kadar gittikten sonra gaza geçtiğimden kalkışlarda problem olmuyordu. Yani motor yeterince ısınırsa problem yok. Ama 2 km. gidip gaza geçirsem vay halime. Bu gözlem ışığında dün 15 km. kadar aracı benzinde kullanıp tekrar Olgun LPG’nin yolunu tuttum. Araç radyatör suyu ısısı 83 derece gösteriyordu ve aralıklarla radyatör hızlıca fanı çalışıyordu. Otomatik kalibrasyona arabayı soktuk. Kalibrasyon başarıyla tamamlandı. Dün yaklaşık 80 km. gaz ile kullandım. Sonuç oldukça başarılı. Benzinden hiç bir farkı yok. Hatta benzinden bile iyi oldu diyebilirim. Biraz daha aracımı kullanıp sonuçları tekrar sizlere iletirim.

Toyota Yaris LPG Dönüşümü - İlk İzlenimler

1210/2007

Olgun LPG ile araba teslimi için arife günü saat 12′ye sözleşmiştik. Fakat 1o gibi cep telefonum çaldı. Olgun LPG’nin bir çalışanı arabamın hazır olduğunu, saat 11′de kapatacaklarını bu saate kadar gelmemi söyledi. Ben de çalıştığımı, karşı yakada olduğumu, o saate geleceğimi belirttim. Aksi durumda arabanız burada kalır gibi tehditkar bir yanıt aldım. Sonuç olarak 11:30′a anlaştık.

Otobüsle apar topar gelerek 11:30′a yetiştim. Arabayı teslim aldım. LPG kumandası direksiyonun soluna yerleştirilmiş. Dolum yeri bence daha da gizlenebilirmiş. Tampona arkadan bakınca belli oluyor. Ama bunla ilgili sorun çıkarmadım. Aracı 1 hafta sonra ayarlama ve kontrol için tekrar getirmemi istediler. Aracıma az bir miktar LPG konulmuştu. Kırmızı ışığı yanıyordu. Tekrar LPG yükletmem gerekiyordu. Nasıl olsa benzim depom dolu diyerek karşı yakaya yola koyuldum.

E -5′e Küçükyalı’dan çıktım ve Altunizade OPET’e kadar aracı ortalama 90 km/s ile sürdüm. İlk testim araç giderken gazdan benzine geçme denemesiydi. 60 km/s saat ile giderken düğmeye bastım. Anlık bir cansızlıktan sonra araba yoluna benzinle devam etti. Ben de ardından tekrar gaza geçtim. Yolda giderken de devamlı ekrandan anlık yakıt tüketimini gözlemliyordum. Aslında anlık yakıt tüketim değerleri ekrana yansıyordu fakat ben bir türlü gaz yakıt tüketimini yol bilgisayarının nasıl ölçtüğüne bir türkü akıl erdiremedim. Dolayısıyla gördüğüm rakamlara hep biraz şüpheyle baktım. Altunizade OPET’ten 20 lt.lik aygaz doldurdum. Kilometre ve yakıt tüketimi sayaçlarımı da sıfırladım.

Şu an arabamla LPG ile ikinci günüm doldu. Yaklaşık 130 km. yol yaptım. Yol bilgisayarında anlık yakıt tüketimi gözlemlediğimde sabit hızlarda gazı benzin kadar yaksa da yokuşlarda ya da hızlanırken benzinden daha çok yakıyor hissiyatı uyandı. Arabayı akan sehir içi trafikte ve otobanda sürdüm. Çok az dur kalklı sıkışık trafiğe girdim. Yol bilgisayarında gözüken yakıt tüketimi 6.0lt/100km. Ortalama hızım 34 km/s. Arabamı tanıyorsam benzinle de bu yol koşullarında en fazla 5.8 ~ 6.0 yakardı. Yani forumlarda denildiği gibi benzinle lpg yakıt tüketimi başabaş. Elbette fiyat avantajından dolayı arabam sadece 9 ykr/km yakıyor. :)

Yaris 1.0′ın özelliği 1.500 ~ 2.000 devire çıkana kadar devir almakta çok zorlanır. 2.500 ~ 3.000 devirde ise kullanması zevkli bir araba haline dönüşür. Performans olarak, gazla benzinle aynı performansı aldığımı söyleyemem. Yani 1.500 devir altı hızlanma problemi gazda biraz daha artmış gibi geldi. Öte yandan bunu arabayı kaldırırken daha fazla gaz vererek, daha yüksek devirlerde 1 -> 2, 2 -> 3 vites değişimi yaparak telafi ediyorum. Zaten 3′ten sonra araba keyfince gidiyor. Bir diğer problemde park esnasında oluyor. Evim yokuşta olduğu için genelde geri vites veya 1. vites ile yokuş yukarı park ediyorum. Yaris güçsüz bir motoru olduğu için çok direnmeden kolayca stop eden bir araba. Gene de benzin ile hafif de olsa stop edeceğini bildirir kavramayı idare ederdiniz. Artık gaz ile hiç direnmeden stop ediyor. Bu sorunu gaza yüklenerek ya da park ederken benzine geçerek telafi edeceğim.

Arabayla işyerime döndüğümde bagajımı derleyip toplamak istedim. Lpg montajı için arka koltuğu da en öne kadar kaydırmıştım. Öncelikle simit depo, ince stepne lastiğimden daha yüksek olduğundan stepne lastiğin üzerine konulan plastik düzleştirici platformu yerine oturtamıyorsunuz. İkinci konu ise gene depo yüksek olduğundan arka koltuk en arka konumuna kadar gelmiyor. Belki zorlasam en arkaya gelirdi fakat zorlamak istemedim. Ayrıca stepne lastiğimi de yatırmak istediğimden arka koltuk diz mesafesinden 7-8 cm. (cetvelle ölçmedim tahminen) kaybediyorsunuz. Nasıl olsa arkada ben oturmuyorum. :) Gene de arka koltuk diz mesafesi şehir içi yolculuklar için yeterli. Şehirler arası zaten öyle kalabalık gidilmez. :)

Son olarak motor sesi ilgimi çekti. Yaris rölanti devri çok düşük olduğu ve dolayısıyla çok sessiz olduğu için arabayı alışık olmayan biri motorun çalıştığı bile anlamaz. Gazla çalışırken rölantide biraz daha gürültülü çalışıyor. Fakat bu da rahatsız edici bir seviyede değil. Yüksek hızlarda ise motorun sesi daha tok geliyor. Öte yandan yüksek hızlardaki motor gürültüsü bana biraz azalmış gibi geldi. Fakat bundan o kadar da emin değilim. Biraz daha kulak kabartmam gerekiyor.

Arkadaşlar, gaz ile giderken yol bilgisayarının anlık yakıt tüketimi değerlerine güvenip güvenemeceğim konusunda aydınlatırsanız sevinirim. Gelişmelerden sizleri haberdar edeceğim.

Toyota Yaris LPG Dönüşümü

1010/2007

2005 model eski kasa Toyota Yaris 1.0′ım var. Arabam benzinle şehiriçi 100 km’de 6.5 ~ 7.0 lt arası yakıyor. Son zamanlarda ayda 1500 km’i geçmeye başlayınca bu arabayla bile benzin masrafı çok gelmeye başladı. Daha önce internette yaris’e LPG dönüşümü yapmaya niyetlenenlere rastladım. Fakat yaptırmış olan adam hiç görmedim. Arkadaşlar arabanın son sahibi sen olursun diyorlar. Fakat benim arabayı en az 5 - 6 sene satmayı hiç niyetim yok. Sonuçta internetten bayağı bir araştırdıktan sonra Tartarini taktırmak için İstanbul Küçükyalı’daki Olgun LPG’ye gittim.

Olgun LPG peşin Landi Renzo 1700 YTL, Tartarini 1850 YTL (peşin) fiyat verdi. Uzun uzun Landi Renzo’yu övdüler. Bosch enjektör kullanıyormuş. Performansta da hiç bir değişim olmayacağı garantisini verdiler. Performans bu araba için çok elzem bir konu. Çünkü araç 5 kişiyle yokuşta el freniyle ıkına ıkına kalkıyor. Biraz performans kaybı olsa yokuş yukarı bırak beşi benle zor kalkacak.

Yaris’le diğer bir problem tankın nereye takılacağı elbette. Yaris’i bilenler bilir normalde arka koltuklar tam geride olduğunda çok ufak bir bagajı vardır. Silindir tank takılsa hiç bagaj yerim kalmayacak. Fakat simit tankın da yeterince güvenli olmayacağını düşünmüştüm. Arkadan bir kaza anında patlamasından korkuyordum. Bagaja ilk baktıklarında silindir tankın bu bagaja olmayacağını tek seçeneklerinin simit tank olduğunu söylediler. Ben de nedense çok sorgulamadan simit tank seçeneğini değerlendirmeye başladım. Tabii silindir tankın diğer bir dezavantajı arka koltukları ileri geri kaydırma olanağımın kalmaması olacaktı. Bu durum da yaris gibi küçük bagajlı bir arabada çok can sıkıcı. Velhasıl kelam, en küçük boyutlu simit tankı yerleştirdik. Sanırım 40 lt hacmi var, ama güvenlik sebebiyle 32 lt. lpg alıyor. Tank, arabanın stepne tekerlek yerine enine boyuna tam olarak oturdu. Fakat bagaj yaklaşık 5 santim kadar yükselecek. Bu da çok büyük sorun değil. Öte yandan tankın bir de kesilmiş halini gösterdiler. Yarım santim kadar saç kalınlığı var. Gözüme çok sağlam gözüktü. Bir kaza anında pek bir şey olacakmış gibi durmuyor. Fakat bu akşam forum.donanimhaber.com’dan ac önel kullanıcısından okuduğum kadarıyla kaza anında darbeyi emmeden olduğu gibi öne aktaracağı için bir güvenlik sıkıntısı doğuruyor. ac öncel’in yazdığını aynen aktarıyorum.

.. tank konusuna gelince simit tank olabileceği gibi küçük silindir tank ta kullanılabilir.biz genel olarak simit tankı fazla önermiyoruz.çünki sitepnenin yola paralel tampon arkasına yerleştirilmesindeki sebeblerden biride;araca arkadan gelecek bir darbeyi emerek ön tarafa iletimini engellemektir.böylelikle hem araçta hem yolcularda meydana gelecek hasar azaltılmış olur.biz bu bölgeye tank yerleştirirsek darbe olduğu gibi aynen ön tarafa iletilecektir.stepne lastik içi basınçlı hava dolu olduğu için darbeyi emer.bu sebebten dolayı müşteriye durumu izah eder ve mecbur kalmadıkça simit tank kullanmayız.saygılarımla.”

forum.donanimhaber.com’da simit tankın daha güvenli yönünde haberler olsayda ac öncel bu işin usta ve onun sözüne inanmakta fayda var. Öte yandan ben bunu aracımı dönüşüm için verdikten sonra öğrendim. Gene de depoyu gördükten sonra içim rahat. Sonuçta lpg’den dolayı oluşan ölümlü kazalar olsaydı benzin lobisi bas bas bunun propagandasını yapardı.

Sonuç olarak Tartarini için verilen fiyat yüksekti ve Landi Renzo için indirim yapabileceğini söyledi. İlk verdiği fiyat peşin 1700, 10 taksit 1850 idi. Tartarini için ise peşin 1850 ytl, 10 taksit 2000 verdi. Ben de pazarlık sonucu ancak 600 ytl peşin + 1000 ytl / 4 taksit yaptırabildim. İyi pazarlık yapmayı beceremem ve ancak bu kadarını yaptırabildim. :)

Yarın arabayı teslim alacağım. Gelişmeleri sizlere bildiririm.

Korkunç Gerçekler - Eş Zamanlı Programlama

2907/2007

Merhabalar, bu yazımda eş zamanlı (concurrent) programlamadan bahsedeceğim. Yeni üstlendiğim bir projede Java’da bir ağ sunucusu yazmamız gerekiyor. Daha önceleri, yazılım kariyerimin ilk yıllarında, benzer işlere bulaşmış biri olarak yeni projemizi sıradan bir iş olarak gördüm. Bir haftadır proje üzerinde çalışıyorum. İlk gün, I/O için java’da kullanacağımız altyapıya karar verdik. Önümüzde temel olarak üç seçenek çıktı;

  1. Java I/O kullanarak ve kendi işcik (thread) yönetimimizle bu işi toparlamak,
  2. Java NIO (Non-Blocking) kullanarak işcik yönetimini büyük ölçüde kütüphaneye devretmek,
  3. Java NIO üzerine inşa edilmiş Apache MINA (Multi-Purpose Infrastructure for Network Applications) kullanmak.

1. seçeneği artık eskimiş ve terkedilen bir teknoloji olması, işcikleri tümüyle kendimizin yönetme zorunluluğu ve performans dezavantajları (Blocking olduğundan) yüzünden eledik.

2. seçeneğimiz java.nio’yu kullanım zorluğundan dolayı eledik.

3. seçeneğimiz java.nio üzerine inşa edilmiş olması, kullanımının daha kolay olması, çalışan sistemlerde kullanılmış bir kütüphane olması dolayısıyla tercih ettik.

Bu haftayı da mina belgelerini okumak, örnekleri incelemek ve projenin temel yapısını ortaya çıkarmakla geçirdim. Mina’da size gelen mesajları karşılamanız için IoHandlerAdapter‘dan bir sınıf türetip bunun messageReceived metodunu yazmanız gerekiyor. Mina dinlediğiniz porta mesaj geldiğinde bu metodu çağırıyor. Buraya kadar her şey iyi, güzel. Devamını okuyun »

altivi.com maceram ve malum son

907/2007

Sevdiğim saydığım internet ve linux kurdu arkadaşım Gömleksizoglu‘nun beni haberdar etmesiyle tanıştık, altivi.com’la. İlk gördüğüm de umarsadım. Sonuçta risk içeren, nitekim kumarın ta kendisi olan bir şans oyunu altivi.com. Bu şans oyunu ingilizce’de “unique bid auction” olarak ifade ediliyor. Wikipedia’da http://en.wikipedia.org/wiki/Unique_bid_auction maddesini okuyabilirsiniz. Türkçe’ye benzersiz teklif ihalesi olarak geçmiş. Bu ne demek diyeceksiniz şimdi? Kısaca her ürünün belirlenen bir tavan fiyatı var, bu fiyatı en yakın, yani en yüksek teklifi vereceksiniz. Ama yetmez, bu teklif öyle bir teklif olacak ki başka bir kimse vermemiş olsun. Yani benzersiz olsun.

Tabii işler bunla da bitmiyor. Elbette her şeyin bir bedeli var. Altivi.com’da bedel teklif başına ödenen bir para oluyor. Bu her ihale için farklı bir ücret oluyor. Dolayısıyla canınızın istediği kadar teklif veremiyorsunuz. İhalenin doğası gereği çok teklif verenin şansı çok oluyor. Ama bu şans bazen güler bazen küser.

Netekim, bendeniz, yılbaşı piyango biletine burun kıvıran şahsiyet, yavaş yavaş bu sitenin çekimine kapıldı. İlk ihale katılma deneyimimi 4072 nolu D-Smart uydu alıcısıyla yaşadım. Şansıma 2 tane teklif verdim danesi 3 liradan. Sonuç getti 6 liram. Heyecan, ümit, stress. Yaşananlar buydu, öte yandan şiddeti bu biraz hafif kalmıştı. Ama olsun bir daha denemeyecektim.. Akla mantığa sığmıyordu. 12.000 ytl’sini buraya yatıranlar vardı. Sonuç kazanmışlar altivi sitesinde çarşaf çarşaf gösteriliyorlardı. Ya diğerleri, bu adam 12.000 ytl yatırırken diğer armut mu topluyordu. Elbette hayır.

Bu akşam saat 21:15. Gene altivi.com’a girildi. Bilinçsizce ihalelere bakıldı. Nokia N80 Internet edition sadece 255 ytl ya da daha ucuza. 850 ytl’lik telefon. Hem de sadece tek teklif vardı. Tam dişime mi göreydi yoksa bu?

Evet bu noktadan sonra kontrol elden gitti. Hemen 6 adet teklif çakıldı tepeden 255 - 250 ytl arası. Toplam 30 ytl trink altivi.com’a. Dakikalar geçtikçe heyecan artıyordu. Ama o da ne, hemen dakkası dolmadan teklif cevap geldi. Benim tekliflerimle 7 olan teklif sayısı bir anda 13 oldu. Hemen cin (fikir) devreye girer. 6 benim teklife cevap verdi adam 7 teklifle.. Demek ki biriyle kapışıyorum.

Kapış bakalım haldun, kapış. Emin ol koca internet şu sitede ikiniz varsınız. Çaktık 5 teklif daha. Son 2 dakika.

Ve teklif sayısı bir anda yüzü geçti. İpler koptu. Acaba ne yapsam? Yoksa kaybediyor muyum?!!!

Ding-dong. 218 teklif ve ve ve..

Hala boş bir umutla ihale sonuçlarını bekliyorum. Evet kaybettim.. 55 ytl gitti çöpe. Kazanan 77 teklif vermiş. Tekliflerin üçte biri. Şans bırakmamış. Ve bu ürün için 192 ytl teklifiyle, 77*5=385 ytl teklif verme bedeliyle toplamdan 583 ytl’ye bu telefona sahip oldu.

Yüzler düştü.. altivi.com gene zengin oldu. 218*5 + 192 = 1282 ytl’ye 850 liralık malı sattı. Bravo altivi.com!..Yazık haldun. Yarım depo benzin paran gitti… :(

Not : altivi.com’un milli piyango idaresinden izni var mıdır acaba? Kısa zamanda bir klonunu yapmalıyım. Netekim para kumar oynamakla değil kumar oynatmakla kazanılıyor.

Not 2 : altivi.com’un klonunu yapmakta ciddi değilim. Yazımın tek amacı var ben yandım siz yanmayın.

Not 3 : Not 2′deki amaca rağmen bu yazıyı okuyanlar, bunlara aldırmayıp bana çıkar kör olası umuduyla altivi.com’a üye olup teklif vereceksiniz. Ne de olsa reklamın iyisi kötüsü olmaz di mi..

Not 4 : altivi.com’un bir çalışanı, ortağı değilim. Yakınları ve tanıdığı da değilim. Hiç tanışmadık. Ama belki karşılaşmışızdır Beşiktaş’ta filan..

Not 5 : Bu yazı için altivi.com’dan para almadan ama bu yazının çok hit alacağını biliyorum.

Not 6 : En kısa zamanda google adsense’i tekrar siteme koymalıyım. Böylece ben de en azından kumarın reklamını yaparak yolumu bulurum.

Not 7 : Bu yazıyı okuduktan sonra altivi.com’a beddua etmek için buraya tıkla.

Java Notları V - Legal Identifiers - Geçerli Adlandırmalar

101/2007

Bir değişkeni adlandırmak için java’da aşağıdaki kuralları uymalısınız.

  1. Değişken adı bir java anahtar kelimesi olamaz.
  2. İlk karakter bir harf, $ veya _ olmalıdır.
  3. Sonraki karakterler bir harf, $, _ ya da bir rakam olabilir.

Örneğin __deneme49, _$ufff, __3434_toto_$ geçerli adlandırmalardır. Öte yandan

new, _34#name, 34_name geçersiz adlandırmalardır.

Öte yandan her dilde olduğu gibi java’da da bir çok anahtar kelime bulunmaktadır. Bunlar,

abstract
assert
boolean
break
byte
case
catch
char
class
const
continue
default
do
double
else
enum
extends
false
final
finally
float
for
goto
if
implements
import
instanceof
int
interface
long
native
new
null
package
private
protected
public
return
short
static
strictfp
super
switch
synchronized
this
throw
throws
transient
true
try
void
volatile
while

Java Notları IV - Access Modifiers - public, protected, default, private

101/2007

 

Bugünkü java notlarında, daha önceleri de bahsettiğim, “access modifier“ konusunu ele almak istiyorum. Nedir bu “access modifer”, ne işe yarar, nasıl kullanılır sorunlarının cevabını vermeye çalışacağım. Bu konuyu anlamak için önceden temel bir kalıtım (inheritance) ve java paketleri (package) konusunda bilgi sahibi olmanız gerekmektedir.

“Access Modifier”ları, Türkçe’siyle erişim koruma niteleyicileri, bir sınıfın bir metoduna veya bir değişkenine, diğer deyişle, bir sınfın malına kimlerin erişebileceğini belirleyen kelimelerdir. Java dört seviyede erişim koruması sağlar. İşin kafa karıştırıcı yönü ise bu dört seviyenin üç farklı isimle adlandırılmasıdır. Peki dördüncü nasıl adlandırılıyor diyorsanız, o adsız kahramandır. Diğer bir deyişle, bir sınıf öğesine erişim koruması atamazsanız o varsayılan (default) erişim korumasına sahip olur. Diğer koruma niteleyicileri public, protected ve private’tır.

Öncelikle temel bir sınıf üzerinden örnek vermeye çalışalım.

Temel.png

Temel sınıfında dört farklı seviyeden dört farklı değişken tanımladık. konsolaBasDaBirGörelim metodu da bu dört değişkeni konsola yazdırma görevini üstlendi. Görüldüğü üzere erişim seviyeleri farklı olsa da sınıfın içinden değişkenlere erişmede bir farklılık, sıkıntı yaşanmadı. Bu zaten işin doğasında olan bir durum çünkü erişim yetkilendirmesi sınıfın kendi için yaptığı bir iş değildir. Erişim niteliyecileri, bu sınıfın dışındaki sınıflardan bu sınıfa olan erişimi kısıtlar. Sınıf içi erişimi kısıtlama gibi bir durum söz konusu değildir.

 

Öyleyse yeni bir sınıf yaratalım ve bu sınıftan Temel sınıfına erişmeye çalışalım.

Dursun.png

Görüldüğü gibi dışarıdaki bir sınıf Temel sınıfının şahsi (private) malları hariç tüm malları erişebilmektedir. ŞahsiMal değişkenine erişmek istediğimizde derleyici hata vermektedir. Sizce de Temel’in korunaklı mallarına tüm sınıfların erişmesi doğal mı? Elbette doğal değil. Dursun, Temel ile aynı paketten bir sınıf olduğundan dolayı böyle bir geniş erişime sahiptir. Şimdi farklı bir pakette bir sınıf ile erişmeye çalışalım.

John

Temel ve Dursun sınıfları accessModifierTestA paketindelerdi. Yukarıdaki John sınıfını ise accessModifierTestB paketinde tanımladık. Görüldüğü üzere John, Temel’in sadece kamu yani public değişkenlerine erişebilmektedir. Dolayısıyla bir tablo yaparsak;

Tablo 1

Kalıtım (Inheritance)

Şimdi Temel sınıfıyla aynı pakette tanımlanmış bir altsınıfla (subclass) ile çalışalım.

UsakA 1

Görüldüğü üzere, aynı paketteki alt sınıf olan UşakA Temel’den kalıtımla aldığı öğelerden sadece şahsi (private) üyelere erişememektedir. Public, private ve default seviyelerine erişim serbesttir.

 

Şimdi aynı örneği accessModifierTestB paketinde tanımlayacağımız UşakB’nin Temel’in hangi üyelerine erişebileceğine bakalım.

UsakB 1

 

 

UşakB’e Temel’den devraldığı public ve protected üyelere erişimde sıkıntı yaşamamaktadır. Öte yandan default ve private erişim seviyelerine erişememektedir.

 

Dolayısıyla demin hazırladığımız tabloyu güncellersek;

Tablo 2

Dikkatli okuyucular hemen UşakA, UşakB örnekleriyle Dursun, John örnekleri arasında önemli bir farkı yakalamıştır. Dursun ve John örneklerinde Temel nesnesine yaratılıp dışarıdan erişim yapılmaktadır. Öte yandan UşakA ve UşakB ise Temel kalıtımla devraldıkları üyeleri erişmektedir. Elbette Dursun ve John, Temel’den türemediği için onlarda böyle bir kalıtım söz konusu değildir. Öte yandan, UşakA ve UşakB, aynı Dursun ve John gibi bir Temel nesnesi yaratıp herhangi bir nesneye erişir gibi Temel nesnesine erişebilir. Acaba bu durumda, erişim kısıtlamaları nasıl çalışmaktadır? Beraber bunun cevabını alalım.

UsakA 2

UşakA için görüldüğü üzere değişen bir durum yoktur. Hatırlayacak olursanız, Dursun’un erişim hakları da UşakA’nın erişim haklarıyla aynıydı. Dolayısıyla aynı paketteki sınıflar için değişen bir kural yoktur. İster temel bir sınfın alt sınıfı olsun, isterse başka bir sınıf, aynı paketteki tüm sınıfların public, protected ve default tüm üyelerine erişebilir.

UsakB 2

UşakB için ise değişen bir durum vardır. UşakB, Temel’den devraldığı korunaklı mallara (protected) erişebildiği halde, yarattığı başka bir Temel nesnesinin sadece kamu mallarına (public) erişebilmektedir. Hatırlatacak olursak, her sınıf gibi John sınıfı da sadece Temel’in kamu üyelerine erişebilmektedir. Dolayısıyla bu durum için UşakB ile John arasında bir faklılık bulunmamaktadır.

 

Sonuç

 

  1. Bir sınıfın private (şahsi) üyelerine sadece sınfın kendisi erişebilir.

  2. Aynı paketteki sınıflar birbirlerinin private (şahsi) üyeleri dışında tüm üyelerine erişebilir.

  3. Farklı paketteki bir sınıfın sadece public (kamu) üyelerine erişilebilir. Buna tek istisna, farklı paketteki bir sınıftan türeyen sınıflar içindir. Alt sınıflar, kalıtımla geçen protected (korunaklı) üyelere de erişebilir.

Tablo 3

* : Farklı pakette yaratılan alt sınıflar, temel sınıfın protected üyelerine erişebilirler.

 

 

 

Java Notları III - Enumlar

3012/2006

Enumerationı, Türkçesiyle numaralandırmayı, bir değişkenin alabileceği değerlerin kısıtlı olması durumunda kullanırız. Şu ana kadar öğrendiğim tüm C ve türevi dillerde enumlara yer verilmiştir. Enumlar kullanışlıdır, kodu gereksiz literal değerlerden kurtararak daha okunur kılarlar. Herşeyden önemlisi tip güvenliğini (type-safety) sağlarlar. Diğer bir deyişle sisteminizdeki değişkenin sizin belirdiğiniz kısıtlı kümeden değer aldığını garantilersiniz.

Enum için bu kadar laf yeter. Java 1.5 versiyonuna kadar enumlar mevcut değilmiş. Enumsız bir dilin nayısıl bu kadar popüler olabildiğini bir yana bırakırsak, 1.5′le gelen enumlar bir gelmiş pir gelmiş. Java enumları şu ana kadar hiç bir dilde karşılaşmadığım kadar yetenekli. Önce standart bir enum ile başlayalım.

KrediKartiEnum.png
Bu çok tipik enum tanımıyla kredi kartlarına özel bir liste hazırlamış olduk. Buraya kadar her şey aynı. Ama java’da dahası var..

KrediKartiEnum2.png

Böylelikle sadece enum sadece basit bir liste olmaktan çıkıyor. Her elemanın kendi ait özellikleri olan bir sınıf halini alıyor. Aslında burada görüldüğü enumların bir sınıftan pek farkı yok. Bir kaç ayrıntı dışında

  1. Enumlar’ın bir kurucusu olsa dahi bu kurucu enum dışından çağırılamaz.
  2. Enum değişkenleri diğer sınıf değişkenleri gibi new ile yaratılmaz. Basit tipler gibi direkt atama kullanılır. Esasında birinci kural bu kuralı da gerektiyor. Çünkü new demek kurucu çağırmak demek halbuki siz sadece enum kendi yarattığı nesneleri kullanabilirsiniz.
  3. vs…vs..vs..

Ambulans neden tersten yazılır

112/2006

Biliyorum belki bir çoğunuz bunu çoktan biliyordur veya bunu bir çırpıda çözebilecek kadar zekidir. Fakat ben değilmişim..
Trafikte yaya olduğum küçüklüğümden beri ambulansın neden ters yazıldığını kafama takılmıştı. Daha doğrusu çocuk aklımla bunu ters yazan bir ambulans fark ettiğimde ulan salak harfleri ters yapıştırmış demiş fakat bir bit yemiği de beynime takılmıştı. Gel zaman git zaman ben ambulansın neden ters yazıldığını bilemeden lise, üniversite hayatımı ve gençliğimi heba ettim. Fakat sonunda, evet sonunda çözdüm.

Ambulans.jpg

Geçen ay kızkardeşim, zat-ı muhterem, Hale hanımı hastaneye doktor kontrolüne götürmüştüm. E malumumuz bir senedir benim de dört tekerim, bir çekerim (motor), bir de dümenim var (İşte sana toplama araba :) ). Ben arabada kızkardeşimi beklerken, es kaza dikiz aynasından sen bakıver. Bir de ne görüver. Bütün dünyam bir anda aydınlandı, büyük bir huzura kavuştum. Artık hayat benim için daha anlamlıydı.

Evet onu görmüştüm, ambulans yazıyordu ama dikiz aynasından baktığım halde rahatça okunuyordu. Neden sarıoğlan (halamlar bana böyle hitap eder) ? Evet söyle neden sarıoğlan?… Sarıoğlan artık aydınlanmış ve yıllardır beynini kemiren bir haşereden kurtulmuştu..

AMBULANS şöförler tarafından dikiz aynalarında düzgünce okunabilsin diye ters yazılır. Duyduk duymadık demeyim. Ben çektim siz çekmeyin.

Ubuntu 6.10

411/2006

Evet Fedora Core 5 (belki de 4′tü), Suse 10.1, Pardus 1.1 Alpha 3 kurduktan sonra taşınabilir bilgisayarım için en uygun linux dağıtımının ubuntu olduğuna karar verdim. Nedeni mi? Oldukça basit kablosuz ağ kartımı hiç bir konfigürasyona ihtiyaç duymadan tanıdı. Zaten eski versiyonlarının da takipçisi olduğum ubuntu, şeker mi şeker gnome pencere yöneticisiyle geliyor. Türkçe çevirilerinde eksiklikler mevcut. Umarım kısa süre içinde bu eksiklikler giderilir. Bir fırsatını bulur çevirilere benim de katkım olursa ne mutlu. Öte yandan gnome’u - kde’ye kıyasla - neden bu kadar sevdiğime gelince; gnome’un sadelik, kolay kullanılabilirlik ve fonksiyonalite bakımından müthiş bir denge oluşturduğunu düşünüyorum. Ayrıca sade ve basit olması ona çok ciddi performans kazancı da sağlıyor.

Ubuntu 6.10′un iso kalıbını cd’ye yazdırıp bilgisayarımızı bu cd’den açarsak bir öğle arası vermenin zamanı gelmiştir. Ne yazık ki bu açılış çift çekirdekli bilgisayarımda bile çok ciddi süre almaktadır. Bunun diğer bir sebebi sistemin açılışta cd’den çalıştırılmasıdır. Karşınıza gelen grafik ekrandan ubuntu’yu hiç kurmadan kullanmaya deneyimini yaşabiliyoruz. Elbette istediğimiz şey değil ve hemen masaüstünde Install linkine tıklıyoruz. Bir yandan ubuntu kurulsun, bir yandan firefox ile internette gezin. Şu ana kadar yaşadığım en keyifli işletim sistemi kurma deneyimi diyebilirim. Ubuntu kurma detayları çok girmeyeceğim çünkü bunu anlatan bir çok site var. Sistem kuruluyor ve ne yazık ki çok yavaş açılıyor. Bu noktada Pardus’umun kulaklarını çınlatmakta fayda var. Gerçekten Pardus 1.1 Alpha 3 çok hızlı açılıyor. Ubuntu bu konuda çok zayıf. Sistemi kurduktan sonra karşılaştığım tek sorun kablosuz ağ kartımın ayarlarını yapmak ve ATI ekran kartımı sisteme tanıtmakta yaşadım. Kablosuz ağ kartını elle ip vererek yapılandırdım. Bir şekilde DHCP çalışmadı henüz nedenini bilmiyorum. Ayrıca sistemi ilk kurduğunuzda kablosuz ağları bulup bunlara otomatik bağlanacak bir araç gelmiyor. Bununla ilgili birkaç paketi sonradan kurdum ama henüz denemedim. Öte yandan ATI Mobility Radeon X1400 ekran kartımı bu sayfadaki açıklamaları takip ederek kolayca tanıttım. Uzun süre boyunca bilgisayarımım sektörlerini işgal edecek bir dağıtım kurduğumu hissediyorum. Umarım hislerim beni yanıltmaz.

« Eski YazılarYeni Yazılar »