TweetFollow Us on Twitter

Sep 98 Online

Volume Number: 14 (1998)
Issue Number: 9
Column Tag: MacTech Online

The Little Framework that Could

by Jeff Clites, online@mactech.com

Getting Started with C++

Code reuse was one of the key motivating forces behind the development of object-oriented programming. It's a simple idea, really - come up with a way to organize code so that conceptually separate pieces are independent and self-contained. Then, since these pieces don't rely on other parts of an application, they can be reused in multiple projects without modification.

The obvious next step in this evolution is the development of application frameworks, and the idea here is simple, too: most Macintosh applications, for instance, have a lot of code in common - they initialize managers, track mouse clicks in menus, and use scroll bars. This is where a framework comes in - it collects commonly-used code and organizes it so that you can develop an application by focusing on the parts which make your application distinctive while ignoring the mundane. This frees you from the burden of writing the same code over and over, and provides you with well-debugged code to do the dirty work. This all sounds great - so you may be asking, "what's the problem?"

MacZoop

Beginning C++ programmers on the Mac face a bit of a Catch-22. On the one hand, they need to be able to test out small stretches of code while they are learning, but there really is a lot of work to be done just to get a small application up and running. So, they could really benefit from a framework - it would relieve them from writing support code which they don't yet feel confident writing, and would allow them to be pretty sure that if something doesn't work then it is a problem with their code and not, say, that they forgot to initialize TextEdit. But, frameworks such as Apple's MacApp and Metrowerks' PowerPlant were not designed with the beginner in mind - they were designed for industrial-strength commercial application development. (For instance, the front end to the Mac version of Netscape Navigator is PowerPlant-based.) Despite excellent documentation, they can be overwhelming, especially for someone who is just learning what inheritance and polymorphism are all about.

This is where MacZoop comes in. It is a small (well, maybe medium-sized) Macintosh application framework generously developed and supported by Graham Cox, and it was specifically designed to be a learning tool for those just starting out with C++. And, in the spirit of enriching the Macintosh community, it's free.

MacZoop!
http://www.maczoop.com
MacApp
http://developer.apple.com/dev/tools/macapp/index.html
Metrowerks (PowerPlant)
http://www.metrowerks.com/

In fact, without any additional code MacZoop builds into a working application. The application doesn't do much, but it has File and Edit menus with the usual menu items, and you can open new (empty) windows which are movable, zoomable, and resizable, and they tile nicely across the screen, just as you would expect from a Mac application. This may not sound like much, but any Mac programmer knows how much effort it takes to set up such things, and how hard it can be for a beginner. This lets them build their code in top of something which already works.

Graham has included a full bag of goodies to help you along. There is an electronic manual, just shy of 200 pages, which uses color more effectively than any other technical documentation I have seen. It provides a compact introduction to the key concept of C++ and of programming the Macintosh in general, and really touches on most subjects that a first-time Mac programmer needs to have under his belt. Also, there is a small demo application showing off many of its main features, and a full-featured paint program which serves as a more extensive example. (Both, of course, come with full source code, and the manual has detailed instructions for compiling the framework using CodeWarrior.)

Harnessing the Power of Resources

MacZoop sports a wealth of very clever features which make it useful beyond its role as a learning tool, and it warrants a look from more experienced programmers as well. For example, if you create a window with one of the traditional floating-window WDEFs, it floats - it stays above all other windows in your application, and hides itself when your application goes into the background - you don't have to worry about the details. It also takes full advantage of ResEdit as an interface editor; for instance, it provides two separate methods (one based on TCL and one on MacApp) for associating commands with menu items, so that after setting up your resources you can forget about your menus and think in terms of commands that your classes understand. ResEdit is also used to create enhanced dialogs, with icon lists or scrolling text boxes installed as easily as any other control.

A few other niceties round out the package, and are worthy of special mention. The framework comes with its own small set of container classes and avoids any use of the STL. This seems to violate the spirit of code reuse, since it duplicates functionality already available as part of the language. But it is actually a clever move - it introduces the concept of containers and templates without requiring a full understanding of the ins and outs of the STL, and it avoids the code bloat often associated with it. Finally, there are many utility classes which make things like creating custom icons or displaying JPEGs a snap.

Extra Toppings

Well, I hope I've given you a sense of what MacZoop has to offer to beginners and to experts alike - there are a multitude of features that I didn't get to mention. In addition to the core distribution, there are a few must-have items contributed by other authors. M. Uli Kusterer has written an extensive set of pane classes specifically for MacZoop, which allow you to organize elements of your visual interface in a natural, hierarchical manner. Uli is also developing Resurrection, a free resource editor for use with MacZoop, written (of course) using MacZoop itself. Finally, Joe Strout has a smaller set of pane classes, which work with MacZoop and with his own framework Moof, which is much smaller than 'Zoop and which would also be well-suited to a beginner.

Uli's MacZoop Classes
http://www.weblayout.com/witness/ZoopClasses.htm
Uli's Resurrection
http://www.weblayout.com/witness/Resurrection.htm
Joe's MacDev Page (Pane Classes, Moof, etc.)
http://www.strout.net/info/coding/macdev/intro.html

The Future

I encourage you to give MacZoop a look, or to point it out to your friends who are just beginning to tinker with programming on the Mac. Professional programmers will at some point want to learn about larger frameworks, but MacZoop will introduce you to concepts that you can take with you when you move on, and it's a rich source of code snippets and example of how to do things the "right" way. This is an especially exciting time to be a Mac developer, with the advent of Mac OS X and ever-faster hardware, and I hope that MacZoop and the work of other generous folk can help open the door to non-programmers wishing to try their hand. Graham intends to make MacZoop fully Mac OS X compliant as soon as the API is finalized (support for Appearance and Navigation Services is in place now), and he has already begun work on a gaming framework built around MacZoop. It should all be a lot of fun.

These and piles of other links are available from the MacTech Online web pages at www.mactech.com/online/.

 

Community Search:
MacTech Search:

Software Updates via MacUpdate

Tips and tricks to get a higher score in...
Snow Roll is a devilish endless runner very much in the vein of Flappy Bird. It revels in its dastardly level of difficulty, and doesn’t really care how angry you get at it as it knows you’ll keep coming back for more. [Read more] | Read more »
How to win big in Slots Deluxe
Cheating while gambling is illegal and morally wrong, and in some parts of the world it leads to men with names like Vinnie "Six Knuckles" Manchenzo beating you to a pulp in a dark alley. [Read more] | Read more »
How to take over the world in Dictator 2
Running a country isn't easy - especially when you're a dictator who wants to take over the world and crush everyone in your path while you do it. [Read more] | Read more »
Tips and tricks to get a higher score in...
Tank.iois - you guessed it! - another multiplayer arena battler likeAgar.io and Slither.io. It does differentiate itself by putting you in a tiny tank though, so it's not exactly the same. To help you get that all-important high score, we've got a... | Read more »
How to unlock characters in One Tap Tenn...
As the title suggests, One Tap Tennis requires only a single tap to play its particular brand of tennis, and rewards you with a ton of unlockable characters if you perform well. Fortunately for you, we at 148Apps have got a few tips and tricks to... | Read more »
Grab it now: Game Craft’s Legend of War...
The real time strategy game is now available for you to sink your teeth into, through the App Store and Google Play. Combining elements of skill, strategy and empire building, Legend of War is a real gamers’ game. [Read more] | Read more »
Skateboard Party 3 ft. Greg Lutzka (Gam...
Skateboard Party 3 ft. Greg Lutzka 1.0 Device: iOS Universal Category: Games Price: $1.99, Version: 1.0 (iTunes) Description: Skateboard Party is back! This third edition of the popular sports franchise features professional skater... | Read more »
Cubious (Games)
Cubious 1.0 Device: iOS Universal Category: Games Price: $.99, Version: 1.0 (iTunes) Description: Cubious – How smart are you? How high is your IQube? Solve the impossible puzzles to find out, and help a lost little cube find his... | Read more »
Goat Simulator Waste of Space (Games)
Goat Simulator Waste of Space 1.1 Device: iOS Universal Category: Games Price: $4.99, Version: 1.1 (iTunes) Description: ** IMPORTANT - SUPPORTED DEVICESiPhone 4S, iPad 2, iPod Touch 5 or better.** | Read more »
Wildfulness - Unwind in nature and calm...
Wildfulness - Unwind in nature and calm your mind with nature sounds and illustrations 1.0 Device: iOS Universal Category: Healthcare & Fitness Price: $1.99, Version: 1.0 (iTunes) Description: Spending time in nature helps you to... | Read more »

Price Scanner via MacPrices.net

Enterprise Workers Pick Technology Over Perks...
New Adobe study shows surprising attitudes about office jobs and where the future of work is heading. Adobe has released survey findings revealing that a surprising 70 percent of U.S. office workers... Read more
Goal Zero and OtterBox Partner to Expand iPh...
Goal Zero, specialists in portable power, have announced a partnership with OtterBox, brand smartphone case protection, to offer the Slide and Slide Plus Batteries as modules compatible with the new... Read more
15-inch Retina MacBook Pros on sale for up to...
B&H Photo has 15″ Retina MacBook Pros on sale for up to $210 off MSRP. Shipping is free, and B&H charges NY tax only: - 15″ 2.2GHz Retina MacBook Pro: $1799 $200 off MSRP - 15″ 2.5GHz Retina... Read more
Clearance 2015 13-inch MacBook Airs available...
B&H Photo has clearance 2015 13″ MacBook Airs available for $250 off original MSRP. Shipping is free, and B&H charges NY sales tax only: - 13″ 1.6GHz/4GB/128GB MacBook Air (MJVE2LL/A): $799... Read more
Apple refurbished Apple TVs available for up...
Apple has Certified Refurbished 32GB and 64GB Apple TVs available for up to $30 off the cost of new models. Apple’s standard one-year warranty is included with each model, and shipping is free: -... Read more
21-inch iMacs on sale for up to $120 off MSRP
B&H Photo has 21″ iMacs on sale for up to $120 off MSRP including free shipping plus NY sales tax only: - 21″ 3.1GHz iMac 4K: $1379.99 $120 off MSRP - 21″ 2.8GHz iMac: $1189 $110 off MSRP - 21″ 1... Read more
Kanex Introduces GoPower USB-C Rechargeable B...
Kanex has announced its GoPower USB-C portable battery for the USB-C MacBook, featuring the new industry standard connector and cable used for connectivity and power. Providing users with a new... Read more
Convertible and Detachable Devices Winning Ov...
According to the latest figures published by International Data Corporation (IDC), Western European shipments of ultraslim convertibles and detachables posted positive growth (44.7%) to account for... Read more
New MacBook Pros And Will MacBook Air Be Upgr...
With my mid-2013 13-inch MacBook Air closing on its third anniversary come November, I’m in system upgrade mode. Actually the Haswell CPU equipped Air is still doing a fine job, but my good wife is... Read more
Apple’s Education discount saves up to $300 o...
Purchase a new Mac or iPad using Apple’s Education Store and take up to $300 off MSRP. All teachers, students, and staff of any educational institution qualify for the discount. Shipping is free, and... Read more

Jobs Board

*Apple* Project Engineer - Smart Source Inc...
SmartSource is in need of an Apple Project Engineer for a 12 month contract opportunity in Pittsburg, PA. Role: Apple Project Engineer Location: Pittsburg, PA Read more
Automotive Sales Consultant - Apple Ford Linc...
…you. The best candidates are smart, technologically savvy and are customer focused. Apple Ford Lincoln Apple Valley is different, because: $30,000 annual salary Read more
Service Assistant - *Apple* Chevrolet *App...
Apple Automotive is one of the fastest growing dealer...and it shows. Consider making the switch to the Apple Automotive Group today! At Apple Automotive, we Read more
Editor, *Apple* News - APPLE (United States...
Job Summary The Apple News team is looking for a passionate and knowledgeable editor with experience covering entertainment/pop culture and experience running social Read more
*Apple* Nissan Service Technicians - Apple A...
Apple Automotive is one of the fastest growing dealer...and it shows. Consider making the switch to the Apple Automotive Group today! At Apple Automotive , Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.